我有一个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?
答案 0 :(得分:1)
你的CheckBox的DataContext将是它所代表的对象:
var myObject = ((CheckBox)sender).DataContext as MyObject;