2009-04-30 14 views
1

前の質問(Previous Question)の回答のおかげで、WPFタブストップをナビゲートするコード本体が作成されました(下図参照)。最初のタブストップ以外は正常に動作します。 this.MoveFocus(... First)を呼び出し、その後にFocusManager.GetFocusedElementを指定するとnullが返されます。何か案は?私のウィンドウで最初のタブストップを取得するにはどうすればいいですか?最初のWPFタブストップの位置付け

おかげで、 - マイク

// Select the first element in the window 
this.MoveFocus(new TraversalRequest(FocusNavigationDirection.First)); 

TraversalRequest next = new TraversalRequest(FocusNavigationDirection.Next); 
List<IInputElement> elements = new List<IInputElement>(); 

// Get the current element. 
UIElement currentElement = FocusManager.GetFocusedElement(this) as UIElement; 
while (currentElement != null) 
{ 
    elements.Add(currentElement); 

    // Get the next element. 
    currentElement.MoveFocus(next); 
    currentElement = FocusManager.GetFocusedElement(this) as UIElement; 

    // If we looped (If that is possible), exit. 
    if (elements[0] == currentElement) 
     break; 
} 

答えて

1

は、私が働いているプロジェクトに似た何かをするために必要な、と私は十分に動作するように何かを発見しました。私はこれは本当に遅れて応答ですけど、あなたはでこのヘルプを行い

using System.Collections.Generic; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Input; 

namespace WpfApplication3 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      this.InitializeComponent(); 

      // Code needs window to be active to work, so just call it in Loaded event for demo 
      this.Loaded += (s, e) => 
      { 
       FocusManager.SetFocusedElement(this, this); 
       UIElement element = FocusManager.GetFocusedElement(this) as UIElement; 
       element.MoveFocus(new TraversalRequest(FocusNavigationDirection.First)); 
      }; 
     } 
    } 
} 

:後ろに

<Window x:Class="WpfApplication3.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication3" 
     Title="MainWindow" SizeToContent="WidthAndHeight"> 

    <StackPanel> 
     <TextBox Width="200" /> 
     <TextBox Width="200" /> 
     <TextBox Width="200" /> 
    </StackPanel> 
</Window> 

コード:

XAML:ここ

はコードで迅速なデモプロジェクトですすべて?