Ошибка компиляции WPF "IDictionary должен иметь атрибут Key" - PullRequest
6 голосов
/ 28 мая 2010

Я создал стили управления, которые хочу использовать среди нескольких страниц xaml в своем приложении WPF. Для этого я создал Resources.xaml и добавил туда стили.

Затем на своих страницах добавляю этот код

<Grid.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/SampleEventTask;component/Resources.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Grid.Resources>

На двух страницах это работает нормально, но на 3-й странице я получаю сообщение об ошибке компиляции:

Все объекты добавлены в IDictionary должен иметь атрибут Key или некоторые другой тип ключа, связанный с их.

Если я добавлю к этому ключ, например ResourceDictionary x: Key = "x", то произойдет ошибка компиляции, но при запуске приложения возникнет ошибка при поиске стиля.

Я могу устранить ошибку компиляции и запустить приложение, просто переместив оригинал (ключ не указан) xaml «ResourceDictionary» из сетки верхнего уровня в отдельную сетку на этой странице.

Но я не понимаю, что здесь происходит. Любые предложения о том, в чем проблема, я просто что-то упускаю или что-то делаю неправильно. Есть ли лучший способ поделиться стилями?

спасибо

1 Ответ

6 голосов
/ 28 мая 2010

Существуют ли какие-либо другие ресурсы, отличные от объединенного ResourceDictionary на этой странице?

Например, вот фрагмент из созданного мной окна.

<Window x:Class="SelectionPagePrototype.SelectionPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:SelectionPagePrototype"
    Title="SelectionPage" MinHeight="600" MinWidth="800" Loaded="OnLoaded">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ImageResourceDictionary.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <local:QuickPickCheckedConverter x:Key="quickPickConverter" />
            <local:BoolToCaptionConverter x:Key="captionConverter" />
            <local:ProductAndImageTypeConverter x:Key="imageConverter" />
        </ResourceDictionary>
    </Window.Resources>
    <Grid> ...

Объединенный словарь нетребуется ключ, но другие ресурсы для этого окна делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...