-2

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

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

在此处输入图像描述

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

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

但它仍然无法得到父母。尽管运行时可以显示 parentElement.VisualParent,但实际上它不起作用。 在此处输入图像描述 在此处输入图像描述

请帮我!谢谢!

4

1 回答 1

1

@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;           
}
于 2020-03-27T08:57:50.647 回答