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

时间:2013-07-25 19:15:53

标签: c# wpf vb.net xaml

我有这个:

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

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

1 个答案:

答案 0 :(得分:2)

选项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>