#wpf #xaml #resourcedictionary
#wpf #xaml #resourcedictionary
Вопрос:
У меня есть 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:
Пара вещей с этой страницы, похоже, имеют отношение к вашему вопросу:
При поиске в коллекции MergedDictionaries сначала выполняется поиск по последнему добавленному ResourceDictionary, и поиск прекращается, как только запрошенный ключ найден. Другими словами, логика извлечения из коллекции объединенных словарей ресурсов вводится последней и выводится первой.
И:
Ресурсы в объединенном словаре занимают местоположение в области поиска ресурсов, которая находится сразу после области основного словаря ресурсов, в который они объединены.
Из этого я делаю вывод, что сначала будет использоваться DataTemplate
определенный в вашем основном словаре, затем SeriesTwo и любой, на который ссылаются до / выше SeriesTwo после этого.
Кроме того, почему бы просто не попробовать это и посмотреть, что получится? Я поддерживаю решение, которое я называю «DumbCrapTestApp», где я тестирую подобные вещи, когда мне интересно, как что-то работает. В нем есть консольное приложение, когда мне просто нужно что-то протестировать на языке, и приложение WPF и Silverlight, когда я хочу что-то там попробовать. Если бы мне нужно было приложение WinForms, я бы просто добавил его и делал там свое дело. Я просто помещаю любой код, который хочу протестировать, в соответствующее приложение, устанавливаю его в качестве своего начального проекта и ухожу. Это действительно полезно для выяснения этих мелочей, и я даже использовал его, чтобы получить разъяснения и проверить ответы, прежде чем публиковать их здесь, на SO.
Комментарии:
1. Спасибо. и «почему бы просто не попробовать это и посмотреть, что получится» …. потому что я был ленив: p и у меня был мозговой штурм, и я не мог додуматься посмотреть документы самостоятельно.