我在 XAML 中有一个本地资源,我希望它被代码的其他部分使用。我怎样才能使它“全局”(即应用程序范围的资源)?这是我的本地资源:
<ResourceDictionary >
<local:BoolToLightConvertor x:Key="LightConverter" / >
</ResourceDictionary>
我怎样才能把它放在 App.xaml 中?
应用程序资源 除了在元素或窗口级别定义资源外,您还可以定义特定应用程序中的所有对象都可以访问的资源。您可以通过打开 App.xaml 文件(对于 C# 项目)或 Application.xaml 文件(对于 Visual Basic 项目)并将资源添加到 Application.Resources 集合来创建应用程序资源,如下所示:
<Application x:Class="WpfApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<SolidColorBrush x:Key="appBrush" Color="LightConverter" />
</Application.Resources>
</Application>
创建一个文件(例如 SharedResources.xaml),如下所示:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Your.Namespace.Here;assembly=Your.Assembly.Here">
< local:BoolToLightConvertor x:Key="LightConverter" / >
</ResourceDictionary>
在您的 App.xaml 中添加以下行:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="SharedResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type Rectangle}" />
</ResourceDictionary>
</Application.Resources>
您现在可以在 XAML 中使用此转换器
(这<Style TargetType="{x:Type Rectangle}"/>
是一种解决方法来阻止忽略您的资源字典的 WPF 错误,并且在 SO 上的另一个问题推荐。不幸的是,该链接现在让我无法理解)