Несколько ResourceDictionary с тем же ключом DataTemplate? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть ResourceDictionary, например (MyResourceDictionary):

<ResourceDictionary xmlns
        .....
        >

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="SeriesTwo.xaml" />
        </ResourceDictionary.MergedDictionaries>

        <DataTemplate x:Key="SeriesDetailedInformation">
            <StackPanel>
                ......content...
            </StackPanel>
        </DataTemplate>
</ResourceDictionary>

SeriesTwo.xaml выглядит так, а также имеет DataTemplate с тем же именем

<ResourceDictionary xmlns=
        .....
        >
        <DataTemplate x:Key="SeriesDetailedInformation">
            <DataGrid>
                ......content...
            </DataGrid>
        </DataTemplate>
</ResourceDictionary>

на моей странице просмотракакой шаблон данных SeriesDetailedInformation используется?Зависит ли это от того, на какой словарь ресурсов я ссылаюсь первым на моей странице?

Любые полезные ссылки и другие материалы для чтения по этой теме также приветствуются.

1 Ответ

2 голосов
/ 11 ноября 2011

Несколько вещей из этой страницы кажутся актуальными для вашего вопроса:

Поведение поиска в коллекции MergedDictionaries сначала ищет последний добавленный ResourceDictionary, и поиск останавливается каккак только запрошенный ключ найден.Другими словами, логика поиска из коллекции словарей объединенных ресурсов является последней в очереди, сначала выходит.

И:

Ресурсы в объединенном словаре занимают место вобласть поиска ресурсов, которая находится сразу за областью основного словаря ресурсов, в которую они объединяются.

Из этого я понимаю, что сначала будет использоваться DataTemplate, определенный в вашем основном словаре, а затем SeriesTwoи любые другие ссылки до и после SeriesTwo после этого.

Кроме того, почему бы просто не попробовать и посмотреть, что произойдет?Я поддерживаю решение, которое я называю «DumbCrapTestApp», где я тестирую подобные вещи, когда мне интересно, как что-то работает.В нем есть консольное приложение, когда мне просто нужно что-то протестировать на языке, а также WPF и приложение Silverlight, когда я хочу попробовать что-то там.Если бы мне было нужно приложение WinForms, я бы просто добавил его и сделал там свое дело.Я просто помещаю любой код, который хочу протестировать, в соответствующее приложение, устанавливаю его в качестве моего запускаемого проекта и все готово.Это действительно полезно для выяснения этих мелочей, и я даже использовал его, чтобы получить разъяснения и проверить ответы, прежде чем публиковать их здесь, на SO.

...