我认为以前没有问过这个问题,如果有的话请重新定位我。我是WPF的新手,我已经尝试了所有我能想到但没有成功的东西,我被卡住了。
我正在使用 WPF主题,我想添加一些我创建的自定义样式。例如,所有TextBlock
都应该具有 Red 前景,但我在 Blue 中有一组TextBlock
。
到目前为止,我一直在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中进行硬编码。
答案 0 :(得分:1)
如果您已加载主题文件,则可以使用与本地样式/资源相同的方式访问任何样式/资源
如果使用Style="{StaticResource StyleName}"
,它将首先在Window / UserControl中查找,如果没有找到,它将查看已加载的资源字典。所以只要你加载了主题(资源字典)它就可以正常工作。
答案 1 :(得分: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}" />