(WPF)如何在后面的代码中找到有关两个ItemsControl的祖先?

我有一个ItemsControl(A)。 ItemSourece是“帐户”类。它包含一些控件和另一个ItemsControl(B)。

ItemsControl(B)包含一些CheckBox。它是ItemSourece是ObservableCollection,包含在“帐户”类中。 CheckBox的内容绑定到内容。 CheckBox的IsChecked绑定到IsChecked。

(WPF)如何在后面的代码中找到有关两个ItemsControl的祖先?

现在,当我单击CheckBox时,我想在“帐户”类中获取ID和用户,但是我不知道如何获取它们。 我已经尝试使用

    private void CheckBox_Click(object sender,RoutedEventArgs e)
    {
        CheckBox checkBox = sender as CheckBox;
        var parentElement = (ContentPresenter)VisualTreeHelper.GetParent(checkBox);           
    }

但是它仍然不能成为父母。 Althouth运行时可以显示parentElement.VisualParent,但实际上不起作用。

(WPF)如何在后面的代码中找到有关两个ItemsControl的祖先?

(WPF)如何在后面的代码中找到有关两个ItemsControl的祖先?

请帮助我!谢谢!

qqqqj 回答:(WPF)如何在后面的代码中找到有关两个ItemsControl的祖先?

@RickyChen-我知道您的问题。 AuthorityCheckBox绑定到您的可视复选框。当您单击复选框时,没有任何链接返回到AuthorityCheckBox

您可以做的是滥用复选框的Tag属性,并将AuthorityCheckBox引用放在此处。

调整您的AuthorityCheckBox类,使其包含在构造函数中分配的public Account Parent。这样,您可以轻松获取AuthorityCheckBox父级:

public class AuthorityCheckBox
{
    public string Content { get; set; }
    public bool IsChecked { get; set; }
    public bool IsEnabled { get; set; }
    public Account Parent { get; private set; }

    public AuthorirtyCheckBox(Account parent)
    {
         this.Parent = parent;
    }
}

事件处理程序如下所示:

private void CheckBox_Click(object sender,RoutedEventArgs e)
{
    AuthorityCheckBox acb = (sender as FrameworkElement).Tag as AuthorityCheckBox;
    Account parent = acb.Parent;           
}
本文链接:https://www.f2er.com/2577052.html

大家都在问