触发仅适用于秒

时间:2012-03-14 09:56:25

标签: wpf templates binding triggers

我有一个包含以下资源的用户控件:

<UserControl.Resources>
    <ControlTemplate TargetType="Button" x:Key="tmp1">
        <Image Source="Resources/img1.png>
    </ControlTemplate>
    <ControlTemplate TargetType="Button" x:Key="tmp2">
        <Image Source="Resources/img2.png>
    </ControlTemplate>
</UserControl.Resources>

我尝试使用以下触发器启用按钮时应用模板:

    <Style TargetType="Buton">
        <Setter Property="Template" Value="{StaticResource tmp1}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=btn1, Path=IsEnabled}" Value="True">
                <Setter Property="Template" Value="{StaticResource tmp2}"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>

什么都没发生!

但请听一下:当我添加第二个setter时如下:

    <Style TargetType="Buton">
        <Setter Property="Template" Value="{StaticResource tmp1}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=btn1, Path=IsEnabled}" Value="True">
                <Setter Property="Template" Value="{StaticResource tmp2}"></Setter>
                <Setter Property="Margin" Value="-6"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>

按钮更改了它的模板(并且根本不移动 - 未应用边距!)。

有谁能告诉我这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

使用标准触发器来观察“IsEnabled”属性。 这样的事情应该有效

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
<ControlTemplate TargetType="{x:Type Button}" x:Key="tmp1">
  <Image Source="img1.png"/>
</ControlTemplate>

<ControlTemplate TargetType="{x:Type Button}" x:Key="tmp2">
  <Image Source="img2.png"/>
    </ControlTemplate>

    <Style TargetType="Button">
      <Setter Property="Template" Value="{StaticResource tmp1}" />
      <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
          <Setter Property="Template" Value="{StaticResource tmp2}"/>
        </Trigger>
      </Style.Triggers>
    </Style>
  </Page.Resources>

  <Grid>  
    <Button IsEnabled="False"></Button>
  </Grid>
</Page>

希望这有帮助。

Shounbourgh