我有一个树 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>
属性窗口也说它是一个对象,但是我不知道为什么:
c# - WPF设计器DataTemplate.DataType不能是类型对象-LMLPHP
有任何想法吗?

最佳答案

您应该有一个xmlns标记,例如locall或类似的标记。在数据类型中,您需要使用local:CorrectionAndFreqViewModel而不是{x:Type CorrectionAndFreqViewModel}。如果您没有这些xmlns值之一,则需要对其进行定义,以使其指向您正在使用的dll(或者,如果您正在查看其他项目,请使用其他标记,例如xmlns:msl="clr-namespace:MediaSystems")

关于c# - WPF设计器DataTemplate.DataType不能是类型对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51645261/

10-13 03:17