我在银光下有一个树形视图,我在我的.xaml页面的加载事件后面的代码中动态创建。我的树视图包含大量的treeviewitems。我的treeviewitem的标题包含一个堆栈面板。我的stackpanel包含一个小孩复选框。我为复选框的Unchecked事件创建了一个事件处理程序。
现在这是我的问题。
当我的复选框的未经检查的事件被触发时,我想要检索正在使用复选框的treeviewitem的对象。
以下是显示我如何创建treeviewitem的代码段
objTreeviewItem = new TreeViewItem();
objStackPanel = new StackPanel();
objStackPanel.Orientation = Orientation.Horizontal;
objCheckBox = new CheckBox();
objCheckBox.Content = "Checkbox1";
objCheckBox.Unchecked += new RoutedEventHandler(objCheckBox_Unchecked);
objStackPanel.Children.Add(objCheckBox);
objTreeviewItem.Header = objStackPanel;
以下是复选框
void objCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
TreeViewItem objItem = (((e.OriginalSource) as CheckBox).Parent as StackPanel).Parent as TreeViewItem;
}
catch (Exception ex)
{
}
}
try块中的上述语句返回null值。因此,我无法检索正在使用已触发事件的复选框的treeviewitem 那么是否有任何其他属性或方法(除了父属性之外)可以帮助我获得treeviewitem 如有任何帮助,将不胜感激
答案 0 :(得分:0)
OriginalSource
属性不会返回你的CheckBox,但是对于事件开始的任何控制,可能是CheckBox中的TextBlock,而是转换sender
,它将始终是事件的控件与。相关联。