Как получить элемент управления из DataTemplate в ControlTemplate? - PullRequest
0 голосов
/ 14 января 2012
<ListBox>
   <ListBox.ItemTemplate>
      <DataTemplate>
        <Button Content="Click Me"
                Click="OnClick"
                Name="btn"/>
      </DataTemplate>
   </ListBox.ItemTemplate></ListBox>

Я хочу получить соответствующий ListBoxItem, когда я нажимаю кнопку. Как это сделать?

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

1 Ответ

0 голосов
/ 14 января 2012

Вы можете сделать это, используя Linq-to-VisualTree следующим образом:

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

Находит первого предка кнопки нужного типа.

В качестве альтернативы, если вы используете привязку данных, вы можете проверить унаследованный DataContext Button, чтобы увидеть, с каким элементом модели он связан. Это было бы моим первым предпочтением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...