2011-12-13 145 views
2

我是新来WPF所以也许这将是“小白”的问题,但我无法找到答案,它(和它似乎很容易)...WPF资源字典和DynamicResource

好吧,我编程WPF应用程序我想使用类似于CSS的网页,所以我发现ResourceDictionary,并试图使用它...

我有主窗口中,我创建框架,并点击一些用户控件加载到相同的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" /> 
    ... 

我不使用它,我的主窗口上,但想用它在我的用户控件,它被加载到主窗口,我尝试使用这样的:

<Label Name="product1" Style="{DynamicResource ProductsRequired}" /> 

警告我所有的时间是:资源“ProductsRequired”无法解决。

我甚至尝试,包括样式到我的用户

<UserControl.Resources> 
    <ResourceDictionary x:Key="styles" Source="../style/Styles.xaml" /> 
</UserControl.Resources> 

,并没有任何反应......

那么我的问题很长,但我想清楚... :)

附:所有的逻辑在C#代码工作的BTW

private ResourceDictionary myStyles = new ResourceDictionary(); 
Style ProductsRequired = myStyles["ProductsRequired"] as Style; 
product1.Style = ProductsRequired; 

回答

1

这样不行,你添加一个resurce字典资源时,你需要将它添加的资源,就不能这样访问。您需要将其添加到MergedDictionaries(请参阅MSDN的使用示例!)

+0

确定感谢名单我会检查出来... – lanicor 2011-12-13 22:59:08

0

你需要这样做

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="style/Styles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 
+1

我这样做之前,并没有工作像它现在不... :(我不知道我是什么做错了...而我不能使用其他资源,如果我使用它... – lanicor 2011-12-14 17:10:26

1

你引用正确装配? 例如:

<Page.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/SecurityManagerResources;component/DictionarySecurityResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Page.Resources>