2013-02-22 61 views
0

我为控件定义了两个资源字典,从文本框继承我的用户中,像这样:使用多个资源字典

<UserControl.Resources> 
    <ResourceDictionary Source="KeyBox.xaml" x:Key="KeyBox" ></ResourceDictionary> 
    <ResourceDictionary Source="kTextBox.xaml" x:Key="kTextBox" ></ResourceDictionary> 
</UserControl.Resources> 

我创建的样式在不同的文件有不同的目标类型:

<Style TargetType="b:kTextBox" > 

现在,当我使用这些资源创建控件时,只有最后应用的样式实际得到应用,所以如果我删除第二个作品。我在这里失去了一些东西来使用同一个用户控件中的两个资源,我无法弄清楚它是什么。任何想法非常赞赏。

回答

0

尝试增加你的资源字典是这样的:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="KeyBox.xaml" x:Key="KeyBox" ></ResourceDictionary> 
      <ResourceDictionary Source="kTextBox.xaml" x:Key="kTextBox" ></ResourceDictionary> 
      </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

需要注意的是,除非你有一个名为kTextBox类,你的风格不会工作。

还值得一提的是,您的控件一次只能应用一种样式,并且将应用添加到字典中的最后一个资源。因此,如果您在具有相同键的两个字典中都定义了样式,则将应用kTextBox.xaml中的样式。

+0

当我这样做时出现此错误>在类型'ResourceDictionary – Constanta 2013-02-22 14:01:02

+0

没有找到可附加属性'MergedDictionaries',因此TriggerPin上面提到的建议只需稍加修改就可以在App.xaml中定义引用,而不是用户控件。我应该补充一点,上面提到的两种风格是为单独的类定义的。 – Constanta 2013-02-22 14:15:17

+0

仅供将来在代码中的将来参考需要替换为 Constanta 2013-02-22 14:29:57