(WPF) 如何在代码后面找到关于两个 ItemsControl 的祖先?
(WPF) How can I find ancestor about two ItemsControl in code behind?
我有一个 ItemsControl(A)。 ItemSource 是一个 Class "Account"。它包含一些控件和另一个 ItemsControl(B)。
ItemsControl(B) 包含一些复选框。它的 ItemSource 是包含在 Class "Account" 中的 ObservableCollection。 CheckBox 的内容绑定到内容。 CheckBox 的 IsChecked 绑定到 IsChecked。
现在当我点击 CheckBox 时,我想在 Class "Account" 中获取 ID 和 User,但我不知道如何获取它们。
我已经尝试使用
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
var parentElement = (ContentPresenter)VisualTreeHelper.GetParent(checkBox);
}
但它仍然无法获得父级。
尽管运行时可以显示 parentElement.VisualParent,但实际上它不起作用。
请帮帮我!谢谢!
@RickyChen - 我明白你的问题了。 AuthorityCheckBox
绑定到您的视觉复选框。当您单击复选框时,没有任何 link 回到 AuthorityCheckBox
。
您可以做的是滥用复选框的 Tag
属性 并将 AuthorityCheckBox
引用放在那里。
调整您的 AuthorityCheckBox
class,使其包含在构造函数中分配的 public Account Parent
。这样你就可以很容易地得到 AuthorityCheckBox
parent:
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;
}
我有一个 ItemsControl(A)。 ItemSource 是一个 Class "Account"。它包含一些控件和另一个 ItemsControl(B)。
ItemsControl(B) 包含一些复选框。它的 ItemSource 是包含在 Class "Account" 中的 ObservableCollection。 CheckBox 的内容绑定到内容。 CheckBox 的 IsChecked 绑定到 IsChecked。
现在当我点击 CheckBox 时,我想在 Class "Account" 中获取 ID 和 User,但我不知道如何获取它们。 我已经尝试使用
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
var parentElement = (ContentPresenter)VisualTreeHelper.GetParent(checkBox);
}
但它仍然无法获得父级。
尽管运行时可以显示 parentElement.VisualParent,但实际上它不起作用。
请帮帮我!谢谢!
@RickyChen - 我明白你的问题了。 AuthorityCheckBox
绑定到您的视觉复选框。当您单击复选框时,没有任何 link 回到 AuthorityCheckBox
。
您可以做的是滥用复选框的 Tag
属性 并将 AuthorityCheckBox
引用放在那里。
调整您的 AuthorityCheckBox
class,使其包含在构造函数中分配的 public Account Parent
。这样你就可以很容易地得到 AuthorityCheckBox
parent:
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;
}