WPF: ссылка на ресурсы приложений в коде позади - PullRequest
12 голосов
/ 04 февраля 2010

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

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

Ответы [ 2 ]

21 голосов
/ 04 февраля 2010

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

2 голосов
/ 26 декабря 2014

Добавление к ответу Рида, если ваш словарь ресурсов представляет собой автономный файл 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.

...