Исключение при применении стиля - PullRequest
4 голосов
/ 19 сентября 2011

Я уверен, что борюсь с чем-то очень простым, упускаю очень простую точку ... Но я просто продолжаю бить стену, поэтому, пожалуйста, помогите.

Проблема заключается в следующем.

Если я определю определенный стиль в <Window.Resources> того же самого окна, где я применяю его к элементам управления - все работает просто отлично.Но так как я хочу повторно использовать этот стиль в другом окне своего приложения, я попытался переместить стиль в какое-то общее место ... И здесь все перестало работать.

Если я поместил стиль в Темы\ Generic.xaml, стиль не применяется.

Когда я пытаюсь ссылаться на него из исходного окна, явно применяя Style="{DynamicResource MyStyle}" к соответствующему элементу управления (где «MyStyle» - это x: ключ стиля) - я получаю ошибку

Ресурс 'MyStyle' не может быть разрешен

Если я помещаю стиль в отдельный файл XAML и пытаюсь добавить его в MergedDictionaries в моем App.xaml, я получаю другойПроблема: «Свойство« Ресурсы »уже установлено в« Приложении »».Вот как я пытаюсь определить это:

<Application.Resources>
    <ResourceDictionary x:Key="MergedDictionaries">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/MyStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
<Application.Resources>

1 Ответ

6 голосов
/ 19 сентября 2011

Вы не должны устанавливать x:Key в словаре, в противном случае он будет добавлен как ресурс, который вам не нужен, вместо этого следует установить свойство Application.Resources.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!-- Merged dictionaries -->
        </ResourceDictionary.MergedDictionaries>

        <!-- Other Resources -->
    </ResourceDictionary>
</Application.Resources>
...