WPF - 创建使用资源样式的触发器

时间:2014-02-18 13:49:34

标签: c# wpf

我有一个带按钮的对话框 - 按钮文本和功能是动态的,并根据用户的需要而变化。 在大多数情况下,按钮样式是默认样式,如果按钮是OK按钮,我希望按钮使用不同的样式。 我试图添加一个触发器,它将根据布尔属性更改按钮样式: (当IsOKButton = true时使用“RedButtonStyle”)

 <Button.Template>
                <ControlTemplate >
                    <ControlTemplate.Triggers>
                        <DataTrigger Binding="{Binding IsOKButton}" Value="True">
                            <Setter Property="Style" Value="{StaticResource RedButtonStyle}"/>
                        </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Button.Template>  
  • RedButtonStyle是一种资源样式,可以在不同的项目中用于不同的按钮类型,因此灵魂应该在我的项目中,而不能在资源样式本身。

但是当使用此触发器时,我得到一个例外。 “set property system.windows.controls.control.template抛出异常”

任何人都可以帮我解决这个问题,或建议动态设置风格吗?

谢谢

1 个答案:

答案 0 :(得分:4)

您可以将触发器放在样式本身中:

<Style x:Key="OKButtonStyle">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsOKButton}" Value="True">
            //Whatever Property is different in the OKButtonStyle
        </DataTrigger>
        <DataTrigger Binding="{Binding IsOKButton}" Value="False">
            //Set it back to default
        </DataTrigger>
    </Style.Triggers>
</Style>

然后从一开始就给你的按钮设置样式OKButtonStyle。

如果想要使你的OK按钮与你希望所有按钮都具有的更通用的风格大致相同,你可以将它基于这样的普通风格:

<Style x:Key="OKButtonStyle" BasedOn="{StaticResource GeneralButtonStyle}">
相关问题