いくつかのカスタム ビューモデルにバインドしているツリー ビューがあります。ビューモデルは にありObservableCollection
、 を継承しViewModelBase
ますINotifyPropertyChanged
。
コンパイルして正常に実行しますが、デザイナーで次のエラーが発生します。
「DataTemplate.DataType はオブジェクト型にできません
パラメータ名: 値"
私の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>
プロパティ ウィンドウにはオブジェクトであるとも表示されますが、その理由はわかりません。
何か案は?
ベストアンサー1
このWPFデザイナーのバグは、DataTemplateにax:Keyを追加することで解決できました。
<ResourceDictionary>
<DataTemplate x:Key="ThisKeySolvesDesignersNullRef"
DataType="viewmodels:MyViewModel">
<views:MyView/>
</DataTemplate>
</ResourceDictionary>
私は何ヶ月も探していました。なぜなら、それは最終的にさまざまなプロジェクトに現れ、時には明確な理由もなく現れたり消えたりしたからです。SOの役に立つ答え