在运行时更改XAML ControlTemplate子元素属性

本文关键字:元素 属性 ControlTemplate XAML 运行时 | 更新日期: 2023-09-27 18:25:07

我有这个:

<ControlTemplate TargetType="Window">
    <TextBlock x:Name="tbFoo" Text="LOREM IPSUM" />
</ControlTemplate>

有没有办法在运行时更改tbFoo的文本?

在运行时更改XAML ControlTemplate子元素属性

选项1:

将属性绑定到TemplatedParent:的某些属性

<ControlTemplate TargetType="Window">
    <TextBlock x:Name="tbFoo" Text="{TemplateBinding Title}" />
</ControlTemplate>

然后:

<Window Title="My Window"/>

将导致tbFoo具有"我的窗口"文本。

选项2:使用Triggers:

<ControlTemplate TargetType="Window">
    <TextBlock x:Name="tbFoo"/>
    <ControlTemplate.Triggers>
       <Trigger Property="IsActive" Value="True">
          <Setter TargetName="tbFoo" Property="Text" Value="Window is Active!"/>
       </Trigger>
       <Trigger Property="IsActive" Value="False">
          <Setter TargetName="tbFoo" Property="Text" Value="Window is Inactive!"/>
       </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>