Điều này được dựa trên nguồn của người khác mà tôi không thể nhớ, nhưng chúng tôi sử dụng nó để giúp tìm hình ảnh của trẻ em thuộc loại. Nó có thể không phải là cách sử dụng hiệu quả nhất cho kịch bản này nhưng nó có thể giúp bạn đi đúng hướng.
public static childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
return null;
}
[Chỉnh sửa 4.16.09] Dựa trên đó, hãy thử phương pháp này. Nên tìm tất cả các hộp kiểm tra và thay đổi trạng thái như được cung cấp, có thể gọi từ trình xử lý sự kiện của bạn trên các sự kiện được kiểm tra/bỏ chọn.
public static void CheckAllBoxes(DependencyObject obj, bool isChecked)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
// If a checkbox, change IsChecked and continue.
if (obj is CheckBox)
{
((CheckBox) obj).IsChecked = isChecked;
continue;
}
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
CheckAllBoxes(child, isChecked);
}
}
Nguồn
2009-04-16 14:07:27
nếu bạn không định sử dụng đối tượng người gửi hoặc routedeventargs trong HeadCheck, bạn không nên chuyển chúng trong – UrbanEsc
'UpdateSourceTrigger = PropertyChanged' sẽ giúp tôi. Cảm ơn. – AechoLiu