如何从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
以查看绑定的模型项。那将是我的首选。
嘿ColinE 我编辑过的问题可以帮助我查询吗? – 2013-02-07 12:40:31