如何在自定义控件库中使用资源字典?
How to use resource dictionaries in custom control library?
我用一些常用的画笔创建了一个资源字典。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="GrayColor1" Color="#f2f2f2"/>
<SolidColorBrush x:Key="GrayColor2" Color="#e5e5e5"/>
<SolidColorBrush x:Key="GrayColor3" Color="#d9d9d9"/>
...
</ResourceDictionary>
我想在自定义控件库中的很多控件中使用它们,但是我没有找到任何方法让它们对控件可用。
在普通应用程序中,我会将它们放在 App.xaml 中,但在库中没有 App.xaml 文件。
那么图书馆资源词典的使用方法是什么?
我已经尝试将字典合并到 /Themes/Generic.xaml 中,但没有成功,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyControls;component/DefaultBrushes.xaml"/>
<ResourceDictionary Source="/MyControls;component/Styles/CustButton.xaml"/>
<ResourceDictionary Source="/MyControls;component/Styles/CustTextBox.xaml"/>
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
但是引用资源会导致空引用(似乎在 Generic.xaml 中只能合并控件模板)。
您仍然可以在您的应用程序中创建您的合并词典 App.xaml,但是在您想要访问这些画笔的控件库中,请尝试使用 DynamicResource 而不是 StaticResource。
Background="{DynamicResource GrayColor1}"
您必须将它们合并到每个控件中,或者如果您有嵌套控件,则合并到最顶层的控件中。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://Application:,,,/MyControls;component/Styles/CusTextBox.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
我用一些常用的画笔创建了一个资源字典。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="GrayColor1" Color="#f2f2f2"/>
<SolidColorBrush x:Key="GrayColor2" Color="#e5e5e5"/>
<SolidColorBrush x:Key="GrayColor3" Color="#d9d9d9"/>
...
</ResourceDictionary>
我想在自定义控件库中的很多控件中使用它们,但是我没有找到任何方法让它们对控件可用。
在普通应用程序中,我会将它们放在 App.xaml 中,但在库中没有 App.xaml 文件。
那么图书馆资源词典的使用方法是什么?
我已经尝试将字典合并到 /Themes/Generic.xaml 中,但没有成功,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyControls;component/DefaultBrushes.xaml"/>
<ResourceDictionary Source="/MyControls;component/Styles/CustButton.xaml"/>
<ResourceDictionary Source="/MyControls;component/Styles/CustTextBox.xaml"/>
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
但是引用资源会导致空引用(似乎在 Generic.xaml 中只能合并控件模板)。
您仍然可以在您的应用程序中创建您的合并词典 App.xaml,但是在您想要访问这些画笔的控件库中,请尝试使用 DynamicResource 而不是 StaticResource。
Background="{DynamicResource GrayColor1}"
您必须将它们合并到每个控件中,或者如果您有嵌套控件,则合并到最顶层的控件中。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://Application:,,,/MyControls;component/Styles/CusTextBox.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>