如何从位于DataTemplate之外的控件中访问位于DataTemplate中的控件。
问题的原因是在DataTemplate标签外部访问DataTemplate中的控件。解决方法是使用VisualTreeHelper类来遍历可视化树,以查找DataTemplate中的控件。
以下是用于ListBox的代码示例,可以根据需要进行修改:
public string option_selected = ""; public int check_count = 0; public void SearchElement(DependencyObject targeted_control) { var count = VisualTreeHelper.GetChildrenCount(targeted_control); // targeted_control是ListBox if (count > 0) { for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(targeted_control, i); if (child is TextBlock) // 特定的子控件 { TextBlock targeted_element = (TextBlock)child; if (targeted_element.IsChecked == true) { if (targeted_element.Tag != null) { option_selected = targeted_element.Tag.ToString(); } return; } } else { SearchElement(child); } } } else { return; } }
你可以参考这个链接中的示例来解决问题:[如何访问DataTemplate中的特定项?](https://stackoverflow.com/questions/5181063/)
希望对你有所帮助!