从DataTemplate中访问具有标识名称的控件
在我的WPF应用程序中,我有一个位于网格控件内的ComboBox控件。 在XAML中,我为ComboBox指定了一个名称:
使用FindName(string)方法,我试图引用ComboBox及其相关名称:
ComboBox stcom { get { return (ComboBox)FindName("stcom"); } } if (stcom != null) { stcom.ItemsSource = list; }
但显然无法找到控件,因为引用stcom
保持为null。
现在的问题是如何使用其name属性引用我的ComboBox?
首先,您必须访问已应用的控件模板,然后您可以按名称查找模板的元素。 看看MSDN知识库:
- 如何:查找ControlTemplate生成的元素
答案是:
和C#:
checkBox.ApplyTemplate(); var tbUserIcon= (TextBlock)checkBox.Template.FindName("tbUserIcon", checkBox);
不要忘记checkBox.ApplyTemplate()在Template.FindName()之前是重要的!
您无法使用其名称访问属于DataTemplate的控件。
例如,您可以尝试阅读一些解决方法
- WPF – 在WPF中从DataTemplate中查找控件
您还可以查看此处发布此主题的数十篇post,例如
- 这里
- 这里
- 这里
- 这里
- 这里
- 这里
- 这里
- 这里