WPF: ссылки на ресурсы приложения в кодировке

Я сделал свой собственный пользовательский конвертер, который задал строку, возвращает Brush. Теперь я могу возвращать постоянные кисти, такие как Brushes.Red и т.д., Но я действительно хочу использовать свои собственные цвета, которые я определил в ресурсе приложения.

Как я могу ссылаться на ресурсы приложения в своем собственном классе конверторов? Я бы использовал FindResource, но, как я уже сказал, это из моего собственного класса конвертера, а не из окна или элемента управления.

Ответ 1

Если они определены в вашем приложении, вы можете использовать Application.Current.FindResource(), чтобы найти их по имени.

Ответ 2

Добавляя к Reed ответ, если ваш словарь ресурсов является автономным XAML файлом, вам необходимо убедиться, что он (как говорит Рид) "определен в вашем приложении".

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>

Build Action в этом словаре XAML файл может быть установлен на Page. Он должен находиться в том же каталоге, что и файл App.xaml.