我想将 HierarchicalDataTemplate 与 DataTemplateSelector 一起使用,但我遇到了订单问题:
<UserControl.Resources>
<HierarchicalDataTemplate x:Key="TemplateA"
ItemsSource="{Binding AnySource}"
ItemTemplateSelector="{StaticResource MyTemplateSelector}" >
<Label Content="A" />
</HierarchicalDataTemplate>
<DataTemplate x:Key="TemplateB">
<Label Content="B" />
</DataTemplate>
<viewmodel:MyTemplateSelector
TemplateA="{StaticResource TemplateA}"
TemplateB="{StaticResource TemplateB}"
x:Key="MyTemplateSelector" />
<HierarchicalDataTemplate x:Key="TemplateC"
ItemsSource="{Binding AnotherSource}"
ItemTemplateSelector="{StaticResource MyTemplateSelector}">
<Label Content="C" />
</HierarchicalDataTemplate>
</UserControl.Resources>
<Grid>
<TreeView
ItemsSource="{Binding Source={StaticResource SomeList}}"
ItemTemplate="{StaticResource TemplateC}"/>
</Grid>
MyTemplateSelector 依赖于 TemplateA,而 TemplateA 依赖于 MyTemplateSelector。我在运行时收到 System.Windows.Markup.XamlParseException。XAML 中是否有前向声明的方法或有不同的解决方案?
解决方案: 我找到了解决方案:我不需要在 TemplateA 中设置 TemplateSelector,因为它是在父 DataTemplate 中设置的。有时它可以如此简单......