我有一个TreeView元素,我试图从另一个Assembly中定义的资源字典设置其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>
谢谢,
Izhar Lotem
答案 0 :(得分:4)
我设法解决了这个错误。我从x:Key
内的HierarchicalDataTemplate
移至ResourceDictionary
。
答案 1 :(得分:0)
在我找到解决方案之前,我实际上是在尝试做类似的事情。 从您的代码中我相信包含您尝试加载\ set的资源的程序集称为“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>