C# 如何在模板中使用控件?

C# 如何在模板中使用控件?,c#,wpf,xaml,C#,Wpf,Xaml,在编译时发生错误。而且btn1也没有出现在IntelliSense中。在ControlTemplate类上尝试该方法 假设这是控件的上下文: MessageBox.Show(this.btn1.name); 在ControlTemplate类上尝试该方法 假设这是控件的上下文: MessageBox.Show(this.btn1.name); 我猜是mjk6026,您误解了来自窗口实际成员元素的WPF模板 的确,当我们命名一个不属于任何模板的UI元素(x:name)时,我们可以在代码隐藏中按

在编译时发生错误。而且btn1也没有出现在IntelliSense中。

在ControlTemplate类上尝试该方法

假设这是控件的上下文:

MessageBox.Show(this.btn1.name);
在ControlTemplate类上尝试该方法

假设这是控件的上下文:

MessageBox.Show(this.btn1.name);

我猜是mjk6026,您误解了来自窗口实际成员元素的WPF模板

的确,当我们命名一个不属于任何模板的UI元素(x:name)时,我们可以在代码隐藏中按名称访问该元素

对于模板,必须使用模板类型的FindName()方法

因此,假设“this”表示应用了样式的窗口,则访问该按钮的方式是(button)this.Template.FindName(“btn”,this)


如果这回答了您的问题,请告诉我……

我猜mjk6026,您误解了窗口实际成员元素中的WPF模板

的确,当我们命名一个不属于任何模板的UI元素(x:name)时,我们可以在代码隐藏中按名称访问该元素

对于模板,必须使用模板类型的FindName()方法

因此,假设“this”表示应用了样式的窗口,则访问该按钮的方式是(button)this.Template.FindName(“btn”,this)


如果这回答了您的问题,请告诉我…

您是在尝试创建无外观控件还是用户控件?您是在尝试创建无外观控件还是用户控件?谢谢。我想到了一个新问题。[1.直接从窗口的xaml代码添加的按钮“btn”。][2.从模板添加的按钮“btn”。(窗口应用此模板)]no.1可以这样访问:debug.writeline(this.btn.name);但是2号不能。这有什么不同?@mjk6026,是的,使用this.btn可以访问直接添加到窗口而不使用模板的元素。模板是占位符工厂UI,在运行时作为可视化树的一部分加载。虽然可以在设计时设置模板,但它们仅在运行时生效。因此,它们的符号\元素部分在运行时解析,因此无论它们是否命名,它们都不能作为“this”的一部分进行访问。它们的名称在本地范围是模板,而不是窗口级别。我希望这能回答你的问题。谢谢。我想到了一个新问题。[1.直接从窗口的xaml代码添加的按钮“btn”。][2.从模板添加的按钮“btn”。(窗口应用此模板)]no.1可以这样访问:debug.writeline(this.btn.name);但是2号不能。这有什么不同?@mjk6026,是的,使用this.btn可以访问直接添加到窗口而不使用模板的元素。模板是占位符工厂UI,在运行时作为可视化树的一部分加载。虽然可以在设计时设置模板,但它们仅在运行时生效。因此,它们的符号\元素部分在运行时解析,因此无论它们是否命名,它们都不能作为“this”的一部分进行访问。它们的名称在本地范围是模板,而不是窗口级别。我希望这能回答你的问题。
var button = (Button)this.Template.FindName("btn", this);