我是WPF的新手所以也许这将是“noob”问题,但我找不到答案(而且看起来很容易)......
我正在编写WPF应用程序,我想使用类似于css的smth用于网页,所以我找到了ResourceDictionary并尝试使用它...
我有一个主窗口,我在其中创建Frame,然后单击一些UserControl加载到同一个Frame.I包括我的ResourceDictionary(root / style / Styles.xaml)到我的主窗口,如下所示:
<Window.Resources>
<ResourceDictionary x:Key="styles" Source="style/Styles.xaml" />
</Window.Resources>
我有:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="ProductsRequired" TargetType="{x:Type Label}">
<Setter Property="Height" Value="28" />
...
我不在我的主窗口上使用它,但是想在我的UserControls上使用它,它们被加载到那个主窗口,我试着像这样使用它:
<Label Name="product1" Style="{DynamicResource ProductsRequired}" />
警告我总是得到:资源“ProductsRequired”无法解决。
我甚至尝试将样式包含在我的UserControl中
<UserControl.Resources>
<ResourceDictionary x:Key="styles" Source="../style/Styles.xaml" />
</UserControl.Resources>
没有任何反应......
我的问题很长,但我想要清楚......:)
P.S。所有这些逻辑都适用于C#代码btw
private ResourceDictionary myStyles = new ResourceDictionary();
Style ProductsRequired = myStyles["ProductsRequired"] as Style;
product1.Style = ProductsRequired;
答案 0 :(得分:1)
这不行,当你需要将添加到资源时,你将resurce字典添加为资源,它不能像这样被访问。您需要将其添加到MergedDictionaries
(有关使用示例,请参阅MSDN!)。
答案 1 :(得分:1)
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/SecurityManagerResources;component/DictionarySecurityResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
答案 2 :(得分:0)
你需要这样做
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="style/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>