CodeGo.net>如何从代码隐藏更改XAML元素模板?

我在资源中定义了下一个按钮的样式:

<Style x:Key="OKBtn" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Rectangle .../>

                    <TextBlock x:Name="Text" ..>
                        <Run Language="en-en" Text="OK"/>
                    </TextBlock>                        
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我想在特定情况下从代码更改Button的文本开始.

即将“确定”(<运行语言=“ zh-cn” Text =“ OK” />)更改为“接受”.
我怎样才能做到这一点?

是否可以访问此TextBlock“文本”并仅为我的一个按钮更改内容,而不是为所有确定按钮更改内容?

我的按钮:

<Button x:Name="OkButton" Style="{DynamicResource OKBtn}" />

解决方法:

您可以从模板模板中借用一些道具,例如标签属性.因此,ControlTemplate中的TextBlock文本应如下所示.

<Run Language="en-en" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag}"/>

您可以通过设置按钮的Tag属性来更改按钮标题.

OkButton.Tag = "Accept";

对于不是手动设置所有按钮文本的情况,可以在Tag属性为空时创建一些ValueConverter,以将ControlTemplate中的TextBlock文本设置为“ Ok”.

上一篇:菜单项内的Windows 10 UWP App菜单弹出


下一篇:DevExpress_GridControl添加按钮列并添加按钮事件