DataTriggers:怎么了?

时间:2013-11-11 13:55:20

标签: .net wpf xaml controltemplate datatrigger

我正在尝试在ToggleButton上使用自定义皮肤。这是我的ToggleButton

<ToggleButton Template="{StaticResource OnTemplate}" IsChecked="True" >
    <ToggleButton.Style>
        <Style TargetType="ToggleButton">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="True">
                    <Setter Property="Template" Value="{StaticResource OnTemplate}" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="False">
                    <Setter Property="Template" Value="{StaticResource OffTemplate}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

以下是两个模板:

<ControlTemplate x:Key="OnTemplate">
    <Grid>
        <Image Source="ToggleOn.png" />
        <TextBlock>On</TextBlock>
    </Grid>
</ControlTemplate>

<ControlTemplate x:Key="OffTemplate">
    <Grid>
        <Image Source="ToggleOff.png" />
        <TextBlock>Off</TextBlock>
    </Grid>
</ControlTemplate>

这似乎不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试从按钮定义中删除Template="{StaticResource OnTemplate}"。本地值超过触发器/样式设置器的值。

此外,您需要使用常规Trigger代替DataTrigger,否则您需要在RelativeSource={RelativeSource Self}绑定上设置DataTrigger。我推荐前者。