我怎样才能在模板中使用控件?

时间:2011-07-21 13:33:36

标签: c# wpf xaml

<Style x:Key="abc" TargetType="{x:Type Window}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Window}">
                <button x:name="btn">my button!!</button>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...
<Window ... Style="{StaticResource styleMainWindow}">

如何使用按钮btn

达到你的期望,

MessageBox.Show(this.btn1.name);

在编译时发生错误。并且btn1也没有出现在智能感知中。

2 个答案:

答案 0 :(得分:1)

在ControlTemplate类上尝试FindName方法。

假设这个是您的Control的上下文:

var button = (Button)this.Template.FindName("btn", this);

答案 1 :(得分:0)

我想mjk6026,你从窗口的实际成员元素中误解了WPF模板。

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

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

因此,假设“this”表示您已应用样式的窗口,您可以访问该按钮的方式是(Button)this.Template.FindName(“btn”,this)

如果这回答了你的问题,请告诉我......