无法检索TreeViewItem的对象

时间:2011-06-17 06:44:50

标签: silverlight

我在银光下有一个树形视图,我在我的.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 如有任何帮助,将不胜感激

1 个答案:

答案 0 :(得分:0)

OriginalSource属性不会返回你的CheckBox,但是对于事件开始的任何控制,可能是CheckBox中的TextBlock,而是转换sender,它将始终是事件的控件与。相关联。