Silverlight 使用多个资源字典
我在usercontrol中为继承自TextBox的控件定义了两个资源字典,如下所示:Silverlight 使用多个资源字典,silverlight,Silverlight,我在usercontrol中为继承自TextBox的控件定义了两个资源字典,如下所示: <UserControl.Resources> <ResourceDictionary Source="KeyBox.xaml" x:Key="KeyBox" ></ResourceDictionary> <ResourceDictionary Source="kTextBox.xaml" x:Key="kTextBox" ></Resou
<UserControl.Resources>
<ResourceDictionary Source="KeyBox.xaml" x:Key="KeyBox" ></ResourceDictionary>
<ResourceDictionary Source="kTextBox.xaml" x:Key="kTextBox" ></ResourceDictionary>
</UserControl.Resources>
我已在具有不同目标类型的单独文件中创建了样式:
现在,当我使用这些资源创建控件时,实际上只应用最后应用的样式,所以如果我删除第二个,第一个就可以了。在这里,我缺少了一些东西来使用同一个usercontrol中的两个资源,我不知道它是什么。非常感谢您的任何想法。尝试添加以下资源字典:
<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中的属性。我在执行此操作时出现此错误>在类型“ResourceDictionaryok”中找不到可附加属性“MergeAddictionaries”,因此,TriggerPin上面建议的操作只需稍加修改即可。引用需要在App.xaml中定义,而不是在usercontrol中定义。我应该补充一点,上面提到的两种样式是为单独的类定义的。只是为了将来在上面的代码中参考,需要替换为
<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>