Добавление в TreeView ResourceDictionary из другой сборки - PullRequest
1 голос
/ 22 мая 2011

У меня есть элемент TreeView, который я пытаюсь установить для своих DataTemplates из словаря ресурсов, который определен в другой сборке.Я использую довольно простой подход:

<TreeView x:Name="treeView"
                  ItemsSource="{Binding Path=Vehicles}">
            <TreeView.Resources>                
                <ResourceDictionary>
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="pack://application:,,,/CarsLib;component/TreeTemplateDictionary.xaml"/>
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
            </TreeView.Resources>
        </TreeView>

Однако.Это не похоже на работу.Я отладил его и заметил, что ResourceDictionary был загружен.Пожалуйста, помогите мне понять, что мне не хватает.ResourceDictionary выглядит так:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:CarsLib">
<HierarchicalDataTemplate x:Key="StationTreeViewTemplate"
                          DataType="{x:Type local:Station}" 
                          ItemsSource="{Binding Path=FamounsModels}">
    <DockPanel>
        <TextBlock Text="{Binding Path=Name}" Margin="3,3,3,3" />
        <TextBlock Text="{Binding Path=EngineSize}" Margin="3,3,3,3" />
    </DockPanel>
</HierarchicalDataTemplate>

Спасибо,

Ижар Лотем

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Мне удалось решить эту ошибку. Я удалил x:Key из HierarchicalDataTemplate внутри ResourceDictionary.

0 голосов
/ 05 октября 2013

Я пытался сделать что-то подобное, пока не нашел решение. Из вашего кода я считаю, что сборка, содержащая ресурсы, которые вы пытаетесь загрузить \ установить, называется «CarsLib.dll» или, по крайней мере, сборка внутренне называется «CarsLib». Тем не менее, я считаю, что ваш код должен выглядеть так:

YourXamlWithTheTreeView.xaml

<TreeView x:Name="treeView"
          ItemsSource="{Binding Path=Vehicles}">
    <TreeView.Resources>                
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Carslib;component/TreeTemplateDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </TreeView.Resources>
</TreeView>
...