我有两个完全相同的HierarchicalDataTemplates。唯一的区别是模板的DataType。
<HierarchicalDataTemplate DataType="{x:Type Data:OuterType}"
ItemsSource="{Binding Items}">
<StackPanel>...</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type Data:InnerType}"
ItemsSource="{Binding Items}">
<StackPanel>...</StackPanel>
</HierarchicalDataTemplate>如何避免在两个数据模板中重复堆栈面板的内容?
我考虑过将StackPanel变成用户控件,但这是唯一可以使用控件的地方。我希望StackPanel是某种资源,但我不知道如何使它工作。
发布于 2013-07-26 16:05:56
我会选择为那些看起来像这样的东西制作单独的模板:
<DataTemplate x:Key="sharedTemplate">
<StackPanel>...</StackPanel>
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type InnerType}"
ItemsSource="{Binding Items}">
<ContentControl Content="{Binding}"
ContentTemplate="{StaticResource sharedTemplate}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type OuterType}"
ItemsSource="{Binding Items}">
<ContentControl Content="{Binding}"
ContentTemplate="{StaticResource sharedTemplate}" />
</HierarchicalDataTemplate>在架构上有更优雅的解决方案,但是外观和感觉是由设计师处理的,我不喜欢在这些事情上使用过于复杂的编程范例。
https://stackoverflow.com/questions/17884643
复制相似问题