我有一个树 View ,我将这些树 View 绑定(bind)到一些自定义 View 模型。 View 模型位于ObservableCollection
中,并继承ViewModelBase
,后者继承INotifyPropertyChanged
。
它可以编译并运行良好,但是在设计器中却出现了错误:
我的XAML是:
<TreeView Grid.Row="1" ItemsSource="{Binding ResultsTree}" SelectedItemChanged="TreeView_OnSelectedItemChanged">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:TreeViewItemViewModel}" ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked}"/>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:CorrectionAndFreqViewModel}">
<StackPanel Orientation="Horizontal" ToolTip="{Binding AmbientText}">
<Rectangle Width="20" Height="5" Fill="{Binding LineColor, Converter={StaticResource ColorToSolidColorBrushValueConverter}}"></Rectangle>
<CheckBox IsChecked="{Binding IsChecked}"/>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
属性窗口也说它是一个对象,但是我不知道为什么:有任何想法吗?
最佳答案
您应该有一个xmlns标记,例如local
,l
或类似的标记。在数据类型中,您需要使用local:CorrectionAndFreqViewModel
而不是{x:Type CorrectionAndFreqViewModel}
。如果您没有这些xmlns值之一,则需要对其进行定义,以使其指向您正在使用的dll(或者,如果您正在查看其他项目,请使用其他标记,例如xmlns:msl="clr-namespace:MediaSystems"
)
关于c# - WPF设计器DataTemplate.DataType不能是类型对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51645261/