如何从DataTemplate控制到ControlTemplate?

问题描述:

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Button Content="Click Me" 
       Click="OnClick" 
       Name="btn"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate></ListBox> 

我想获得相关的ListBoxItem当我点击Button.how来做到这一点?如何从DataTemplate控制到ControlTemplate?

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

可以按如下方式做到这一点使用Linq-to-VisualTree

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

此发现按钮是所需类型的始祖。

或者,如果您使用的是数据绑定,则可以检查Button的继承DataContext以查看绑定的模型项。那将是我的首选。

+0

嘿ColinE 我编辑过的问题可以帮助我查询吗? – 2013-02-07 12:40:31