我正在按照 prism 来构建 wpf 应用程序。在我的应用程序中,有一个辅助类库,我在其中定义了资源和样式,这些资源和样式将由解决方案中的多个类库使用。
但是当我尝试将资源设置为窗口的 Style 属性时出现错误。该窗口与资源位于不同的类库中。
我收到的错误是: 找不到名为“{resourceName}”的资源。资源名称区分大小写。标记文件中的对象“MyWindow”出错
我使用了以下代码,但它不起作用
<Window x:Class="Class1" Style="{StaticResource resourceName}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/classlibrary;component/Dictionary/resource1.xaml" /> </ResourceDictionary.MergedDictionaries>
< /ResourceDictionary>
< /Window.Resources>
</Window>
最佳答案
您需要使用DynamicResource标记扩展。原因是您导入的外部 ResourceDictionary 是在为 Window 设置样式后在 xaml 中声明的。使用引用的类库中定义的样式设置窗口样式的工作示例如下:
“主窗口”xaml:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Style="{DynamicResource TestStyle}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="pack://application:,,,/ClassLibrary1;component/Styles.xaml">
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
</Grid>
</Window>
类库中的 ResourceDictionary(在名为 Styles.xaml 的文件中定义):
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="TestStyle" TargetType="Window">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Green"></SolidColorBrush>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
关于wpf - 将资源或样式设置为来自不同类库的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463785/