从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,例如

  • 这里
  • 这里
  • 这里
  • 这里
  • 这里
  • 这里
  • 这里
  • 这里