2016-10-11 9 views
0

私は、TreeViewと他のコントロールでいっぱいのウィンドウを持っています。ユーザーがTreeViewの項目を選択した後、Enterキーが押されたときにコマンドをトリガーし、後でTreeViewにフォーカスを変更して、その選択を見ることができます。フォーカス制御が機能しません

コマンド呼び出しは、このコードで動作します:

<Window ...> 
    ... 
    <Window.InputBindings> 
     <KeyBinding Command="{Binding Path=MyCommand}" Key="Enter"/> 
    </Window.InputBindings> 
    ... 
    <TreeView x:Name="tv" ...> 
     ... 
    </TreeView> 
</Window> 

しかし、私は、コマンドが実行された後TreeViewコントロールにフォーカスを変更する方法を知りません。 XAMLやCodebehindでどうすればよいですか? XAMLの回答が優先されます。

これは私が試したものです:

<Window.InputBindings> 
    <KeyBinding Command="{Binding Path=ChangeCategoryCommand}" Key="Enter" FocusManager.FocusedElement="{Binding ElementName=tv}"/> 
</Window.InputBindings> 

しかし、ツリービューで選択がEnterを押した後、表示されていないので、私は明らかに間違って何かをやっている...

答えて

1

のみコードビハインドソリューション:

<Window 
PreviewKeyUp="OnPreviewKeyUp"> 
<Window.InputBindings> 
    <KeyBinding Key="Enter" Command="{Binding Path=MyCommand}" /> 
</Window.InputBindings> 

<TreeView x:Name="tv" /> 

とコードビハインド:

private void OnPreviewKeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      this.tv.Focus(); 
     } 
    } 

FYI:ツリービューの選択された項目は読み取り専用であり、実際にはバインディングでは使用できません。

関連する問題