2012-01-14 8 views
0
<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Button Content="Click Me" 
       Click="OnClick" 
       Name="btn"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate></ListBox> 

これを行うには、Button.hをクリックして関連するListBoxItemを取得したいと思いますか?DataTemplateからControlTemplateへの制御を取得するには?

private void OnClick(object sender, RoutedEventArgs e){// How to get ListBoxItem?} 

答えて

0

次のようにLinq-to-VisualTreeを使用してこの操作を行うことができます。

Button btn = sender as Button; 
ListBoxItem item = btn.Ancestors<ListBoxItem>().Cast<ListBoxItem>().First(); 

これは、所望のタイプのものであり、ボタンの最初の祖先を見つけました。

データバインディングを使用している場合は、Buttonの継承されたDataContextを調べて、バインドされているモデルアイテムを確認できます。それが私の最初の好みです。

+0

Hey ColinE 私の質問を編集して私の質問に私を助けることができますか? –

関連する問題