WPF: получить объект, визуализированный с помощью (иерархического) шаблона данных - PullRequest
1 голос
/ 09 августа 2011

У меня есть TreeView с парой элементов.Элементы визуализируются с помощью простого шаблона иерархических данных, например:

<HierarchicalDataTemplate x:Key="instanceTemplate">
  <CheckBox Checked="InstanceCheckChanged" Unchecked="InstanceCheckChanged">
    <Label>Hello World!</Label>
  </CheckBox>
</HierarchicalDataTemplate>

Как вы можете видеть, я добавил обработчик событий, вот код:

private void InstanceCheckChanged(object sender, RoutedEventArgs e)
{
  CheckBox checkBox = (CheckBox)sender;
}

Вэтот обработчик события, отправитель события, очевидно, сам флажок, однако флажок фактически визуализирует мой обычный объект.У меня вопрос, как мне получить объект, который визуализируется флажок?Желательно, чтобы у меня был метод с такой подписью:

public MyObject GetMyObject(UIElement sender);

Возможно ли это в WPF или есть чистый способ хранения метаданных, чтобы я знал, какой MyObject был проверен?

1 Ответ

1 голос
/ 09 августа 2011

Ваш CheckBox DataContext будет объектом, который он представляет:

var myObject = ((CheckBox)sender).DataContext as MyObject;
...