我有两个简单的ViewModel,NodeViewModel
和LeafViewModel
,它们可以是TreeView中的项目。就像下面一样。模板被隐含地应用,因为我不想要自定义模板选择器。
<UserControl x:Class="MyProject.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:ViewModels="clr-namespace:MyProject.ViewModels" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignData /SampleData/NodeViewModelSampleData.xaml}">
<UserControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:NodeViewModel}" ItemsSource={Binding Children}>
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding Name}" IsChecked="{Binding Result}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:LeafViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</UserControl.Resources>
<TreeView ItemsSource="{Binding Children}" />
</UserControl>
如何在包含NodeViewModel
和LeafViewModel
的树的混合中生成样本数据,然后在仍然使用隐含模板选择时将其显示为树视图中的数据?
答案 0 :(得分:1)
在没有使用某种模拟框架的情况下,我发现最简单的方法就是将一个生成我的视图模型实例并将其用作Blend数据源的类。
在我看来,在XAML中定义测试数据可能更容易,但这取决于设计允许的视图模型类(例如,使用无参数构造函数和ContentProperty
属性,除其他外)。
答案 1 :(得分:0)
我认为答案很简单:你做不到。
Blend与隐式数据窗口和模板选择器不能很好地协同工作。这不仅适用于样本数据,也适用于所谓的wysiwyg模板编辑。因此,对于可混合性,您应该尽可能避免使用模板和模板选择器。