C# WPF未应用数据模板
在我的空闲时间,我正在尝试将一个项目重构为完整的MVVM模型,并使用WPF数据绑定、模板化。。。等等。 但问题是。我有一个不应用数据模板的控件C# WPF未应用数据模板,c#,wpf,mvvm,C#,Wpf,Mvvm,在我的空闲时间,我正在尝试将一个项目重构为完整的MVVM模型,并使用WPF数据绑定、模板化。。。等等。 但问题是。我有一个不应用数据模板的控件 <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<UserControl
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:vm="clr-namespace:WPFCADCore.ViewModels.CADPrimitives;assembly=WPFCADCore"
xmlns:local="clr-namespace:WPFCADCoreControls.Views.Editors" x:Class="WPFCADCoreControls.Views.Editors.EditorBaseView"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
d:DataContext="{d:DesignData Source=EditorBaseDesignData.xaml}">
<UserControl.Resources>
<DataTemplate DataType="{x:Type vm:CADLinePrimitiveViewModel}">
<Line X1="{Binding Begin.X}" Y1="{Binding Begin.Y}"
X2="{Binding End.X}" Y2="{Binding End.Y}"
Stroke="{Binding LineColor}" StrokeThickness="{Binding LineWidth}">
</Line>
</DataTemplate>
</UserControl.Resources>
<ItemsControl ItemsSource="{Binding Entities}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="White"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</UserControl>
这就是我所看到的一切
所以绑定到源代码是可行的,但dataTemplate并没有自动应用
我试着用
DataType=“vm:CADLinePrimitiveViewModel”
DataType=“CADLinePrimitiveViewModel”
没有结果
我无法将此模板插入ItemSource,因为那里将有不同类型的对象,而不仅仅是线条
ObservableCollection<ICADEntityViewModel> Entities
ObservableCollection实体
其中ICADEntityViewModel是接口
有什么建议吗?变通办法 找到了类似的答案,更像是解决办法。 我当时正在开发WPF类库,当我创建WPF应用程序并在那个里复制代码时,它开始正常工作。
我不知道为什么它在类库中不起作用我在本地试用过,效果很好。是否可以检查输出窗口中是否存在任何可能导致问题的错误?设置ItemsControl的ItemTemplate。正如我所说,我无法在ItemsControl中设置ItemTemplate,因为源中会有不同的类型,模板应根据类型应用,此外,我想在resourceDictionary中定义模板,这个例子只是为了简单起见。