C# WPF-当用户单击复选框时如何获取treeviewitem

C# WPF-当用户单击复选框时如何获取treeviewitem,c#,wpf,events,data-binding,treeview,C#,Wpf,Events,Data Binding,Treeview,我已经为C#后面的代码中的TreeView定义了ItemTemplate。在该ItemTemplate中,我有一个复选框和一个定义在其中的标签。复选框和标签的标记和文本属性与数据绑定在一起 现在,每当用户单击复选框时,我想获取TreeViewItem对象我在复选框上使用了click事件,但该事件没有给我树视图项的对象 如果有人能解释一下解决方法,我将不胜感激 下面是用C#编写的代码: 您可以使用以下帮助器方法获取对可视化树中复选框的父项树视图项的引用: private static T Find

我已经为C#后面的代码中的
TreeView
定义了
ItemTemplate
。在该
ItemTemplate
中,我有一个
复选框和一个定义在其中的标签。
复选框和标签的
标记和
文本属性与数据绑定在一起

现在,每当用户单击复选框时,我想获取
TreeViewItem
对象我在
复选框上使用了click事件
,但该事件没有给我
树视图项
的对象

如果有人能解释一下解决方法,我将不胜感激

下面是用C#编写的代码:


您可以使用以下帮助器方法获取对可视化树中
复选框的父项
树视图项的引用:

private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
    var parent = VisualTreeHelper.GetParent(dependencyObject);

    if (parent == null) return null;

    var parentT = parent as T;
    return parentT ?? FindParent<T>(parent);
}
私有静态T FindParent(DependencyObject DependencyObject),其中T:DependencyObject
{
var parent=VisualTreeHelper.GetParent(dependencyObject);
if(parent==null)返回null;
var parentT=作为T的父项;
返回父母??找到父母(父母);
}
用法:

private static void CheckedEvent(object sender, RoutedEventArgs e)
{
    CheckBox checkbox = (CheckBox)sender;
    var name = checkbox.Tag.ToString();

    TreeViewItem tvi = FindParent<TreeViewItem>(checkbox);
    //...
}
private static void CheckedEvent(对象发送方,routedEventTarget e)
{
复选框=(复选框)发件人;
var name=checkbox.Tag.ToString();
TreeViewItem tvi=FindParent(复选框);
//...
}
private static void CheckedEvent(object sender, RoutedEventArgs e)
{
    CheckBox checkbox = (CheckBox)sender;
    var name = checkbox.Tag.ToString();

    TreeViewItem tvi = FindParent<TreeViewItem>(checkbox);
    //...
}