WPF:在代码隐藏中引用应用程序范围的资源

时间:2010-02-04 19:52:51

标签: c# wpf resources code-behind

我制作了自己的自定义转换器,给定一个字符串返回Brush。现在我可以返回常量画笔,例如Brushes.Red等,但我真的想使用我在应用程序范围内定义的颜色。

如何从我自己的自定义转换器类中引用应用程序范围的资源?我使用FindResource,但正如我所说,这是来自我自己的转换器类,而不是窗口或控件。

2 个答案:

答案 0 :(得分:21)

如果在您的应用程序中定义了这些,您可以使用Application.Current.FindResource()按名称查找它们。

答案 1 :(得分:2)

添加到Reed的答案,如果您的资源字典是一个独立的XAML文件,您需要确保它(如Reed所说)“在您的应用程序上定义。”

<强>的App.xaml

<Application x:Class="WpfApplication10.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary Source="Dictionary1.xaml" />
    </Application.Resources>
</Application>

<强> Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TextBlock x:Key="k_foo" Text="FOO" />
</ResourceDictionary>

此词典XAML文件上的Build Action可以设置为Page。它应该与App.xaml文件位于同一目录中。