【发布时间】:2011-01-13 05:55:47
【问题描述】:
我制作了自己的自定义转换器,它给定一个字符串返回一个Brush。现在我可以返回常量画笔,例如Brushes.Red 等,但我真的很想使用我在应用程序范围的资源中定义的自己的颜色。
如何从我自己的自定义转换器类中引用应用程序范围的资源?我会使用FindResource,但正如我所说,这是来自我自己的转换器类,而不是窗口或控件。
【问题讨论】:
标签: c# wpf resources code-behind
我制作了自己的自定义转换器,它给定一个字符串返回一个Brush。现在我可以返回常量画笔,例如Brushes.Red 等,但我真的很想使用我在应用程序范围的资源中定义的自己的颜色。
如何从我自己的自定义转换器类中引用应用程序范围的资源?我会使用FindResource,但正如我所说,这是来自我自己的转换器类,而不是窗口或控件。
【问题讨论】:
标签: c# wpf resources code-behind
如果这些是在您的应用程序中定义的,您可以使用Application.Current.FindResource() 按名称查找它们。
【讨论】:
TryFindResource() 根据this answer 可能是更好的解决方案。
除了 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 文件位于同一目录中。
【讨论】: