Catel:根据另一种第三方风格创建新的DataWindowButtonStyle

时间:2017-03-25 03:04:32

标签: c# wpf xaml catel

参考:Catel docs

使用Visual Studio 2013,.NET 4.5.1,Catel 4.4。

我有一个带默认关闭按钮的DataWindow。我想使用MahApps.Metro Flat Button样式设置该按钮的样式。如果我可以直接访问DataWindow Close按钮(我认为它是在运行时创建的),我会在XAML中应用Flat Button样式,但我没有。

在Catel文档中,评论说我们应该指定自己的DataWindowButtonStyle。我可以获得一个创建新的DataWindowButtonStyle的示例,我可以将其基于MahApps.Metro Flat Button样式吗?

如果您有任何疑问或需要更多信息,请与我们联系。

谢谢!

编辑:这是我尝试过的:

<catel:DataWindow.Resources>
    <!--  Compile Error:  A 'DynamicResourceExtension' cannot be set on the BasedOn property of type 'Style'.
    <ResourceDictionary>
        <Style x:Key="DataWindowButtonStyle" BasedOn="{DynamicResource MetroFlatButton}" />
    </ResourceDictionary>    
    -->
    <!-- This compiles and runs, but doesn't work.
    <ResourceDictionary>
        <Style x:Key="DataWindowButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Yellow" />
        </Style>
    </ResourceDictionary>
    -->
    <!-- This compiles and runs, but doesn't work.
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Catel.MVVM;component/themes/generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Style x:Key="DataWindowButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Yellow" />
        </Style>
    </ResourceDictionary>
    -->
    <!-- Compiles and runs, but doesn't work. -->
    <Style x:Key="DataWindowButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Yellow" />
    </Style>
</catel:DataWindow.Resources>

2 个答案:

答案 0 :(得分:0)

您可以简单地定义一个新的DataWindowButtonStyle资源,它应该自动应用。

答案 1 :(得分:0)

必须在App.xaml应用程序资源中定义自定义DataWindowButtonStyle。

的App.xaml:

<Application.Resources>
    <Style x:Key="DataWindowButtonStyle" TargetType="{x:Type Button}">
      <Setter Property="Background" Value="Yellow"/>
      <Setter Property="Foreground" Value="Red"/>
      <Setter Property="MinHeight" Value="50"/>
    </Style>
</Application.Resources>

我不知道为什么设置背景属性不起作用。但其他财产正在发挥作用。