gpt4 book ai didi

c# - WPF Designer DataTemplate.DataType 不能是类型对象

转载 作者:可可西里 更新时间:2023-11-01 08:29:53 27 4
gpt4 key购买 nike

我有一个 TreeView ,我绑定(bind)了一些自定义 View 模型。 View 模型位于 ObservableCollection 中并继承 ViewModelBase,后者继承 INotifyPropertyChanged

它编译并运行良好,但在设计器中出现错误:

"DataTemplate.DataType cannot be type object

Parameter name: value"

我的 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>

属性窗口也显示它是一个对象,但我不知道为什么:

enter image description here

有什么想法吗?

最佳答案

我认为它希望您使用接口(interface)类型而不是类类型。

因此,如果您定义一个接口(interface) ICorrectionAndFreqViewModel 公开您将用于数据绑定(bind)的所有属性,然后让 CorrectionAndFreqViewModel 实现该接口(interface),您应该做个好人。

就像你说的,代码仍然可以在不使用接口(interface)的情况下编译和运行。我对设计者提示的原因的猜测是数据绑定(bind)只能用于 public 属性,因此通过使用接口(interface),可以保证所有属性都是 public.

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com