2009-11-25 15 views
9

データテンプレート(リストボックスに多数のコンボボックス)内にWPF ComboBoxがあり、入力ボタンを処理したいと思います。もしそれが簡単ならば、それは簡単だろう。ボタン - 私はコマンド+相対バインディングのパスなどを使用するだろう残念ながら、私はどのようにコマンドでキーを押すか、またはテンプレートからイベントハンドラを設定する方法を知りません。 提案がありますか?DataTemplateのイベントハンドラ

答えて

4

通常のイベントハンドラを使用して私が視覚ツリーを歩き、対応するボタンを見つけてそのコマンドを呼び出すことで、私の問題を解決しました。 誰かが同じ問題を抱えている場合は、コメントを投稿してください。私はボタンのビジュアルツリーを検索し、ボタンに関連付けられたコマンドを実行するよりも、

UPD

は、ここに私のソリューションです。

View.xaml:

<ComboBox KeyDown="ComboBox_KeyDown"/> 
<Button Command="{Binding AddResourceCommand}"/> 

View.xaml.cs:

private void ComboBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     var parent = VisualTreeHelper.GetParent((DependencyObject)sender); 
     int childrenCount = VisualTreeHelper.GetChildrenCount(parent); 

     for (int i = 0; i < childrenCount; i++) 
     { 
      var child = VisualTreeHelper.GetChild(parent, i) as Button; 
      if (null != child) 
      { 
       child.Command.Execute(null); 
      } 
     } 
    } 
} 
10

あなたがして、テンプレートを設定しているスタイルでEventSetterを使用することができます。

<Style TargetType="{x:Type ListBoxItem}"> 
     <EventSetter Event="MouseWheel" Handler="GroupListBox_MouseWheel" /> 
     <Setter Property="Template" ... /> 
</Style> 
関連する問題