0

我不认为以前有人问过这个问题,如果有,请重定向我。我是 WPF 的新手,我已经尝试了我能想到的一切,但没有成功,我被困住了。

我正在使用WPF Theme,我想添加一些我创建的自定义样式。例如,所有人TextBlock都应该有Red前景,但我有一组TextBlock我想要的Blue

到目前为止,我一直在 xaml 中执行此操作,<Style></Style>资源中创建一个,并使用Style="{StaticResource StyleName}". 但是我想将它添加到主题文件中,并且我不知道如何给它命名并从 xaml 中调用它。

我想我会从这样的东西开始,但是我如何链接这两个元素呢?

在主题文件(MyStyles.xaml 或 TextEdit.xaml 或类似文件)中:

<Style TargetType="{x:Type TextBlock}" x:Key="KeyName" ???>
      <Setter Property="Foreground" Value="Blue" />
</Style>

然后在我的xaml 中:

<TextBlock Name="TextBlockName"
      Style="{???}">
</TextBlock>

我需要将这种样式放在主题中,因为程序将允许用户更改主题,并且这些样式不能硬编码在 xaml 中。

4

2 回答 2

1

如果您已经加载了主题文件,您可以像访问本地样式/资源一样访问任何样式/资源

如果您使用Style="{StaticResource StyleName}"它,它将首先在 Window/UserControl 中查找,如果没有找到,它将通过加载的资源字典查找。因此,只要您加载了主题(资源字典),它就可以正常工作。

于 2013-02-12T21:16:43.180 回答
1

您想首先将该资源文件合并到您的资源中:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MyStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <dxc:IntToBooleanConverter x:Key="IntToBooleanConverter" />
        (...)
    </ResourceDictionary>
</UserControl.Resources>

然后你可以使用它

<TextBlock Name="TextBlockName" Style="{StaticResource KeyName}" />
于 2013-02-12T21:22:53.103 回答