I have a ItemsControl(A). ItemSourece is a Class "Account".It contains some controls and another ItemsControl(B).
ItemsControl(B) includes some CheckBox. It's ItemSourece is ObservableCollection included in Class "Account". CheckBox's Content is binding to Content. CheckBox's IsChecked is bindind to IsChecked.
Now when I click CheckBox, I want to get ID and User in Class "Account", but I don't know hot to get them. I already try to use
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
var parentElement = (ContentPresenter)VisualTreeHelper.GetParent(checkBox);
}
but it still can't get parent. Althouth runtime can show parentElement.VisualParent, but actually it is not work.
Please help me! Thanks!
@RickyChen - I see your problem. AuthorityCheckBox
binds to your visual checkboxes. When you click on a checkbox, there isn't any link back to the AuthorityCheckBox
.
What you can do is abuse the Tag
property of your checkbox and place the AuthorityCheckBox
reference there.
Adjust your your AuthorityCheckBox
class so it contains public Account Parent
that is assigned in the constructor. This way you can easily get the 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;
}
}
The event handler then looks like this:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
AuthorityCheckBox acb = (sender as FrameworkElement).Tag as AuthorityCheckBox;
Account parent = acb.Parent;
}