如何从DataTemplate控制到ControlTemplate?

时间:2012-01-14 06:30:50

标签: windows-phone-7

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

我想在单击Button.how时获取相关的ListBoxItem吗?

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

1 个答案:

答案 0 :(得分:0)

您可以使用Linq-to-VisualTree执行此操作,如下所示:

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

这会找到所需类型的按钮的第一个祖先。

作为替代方案,如果您正在使用数据绑定,则可以检查DataContext的继承Button以查看它绑定到哪个模型项。这将是我的第一选择。