我正在编写WPF应用程序。我希望它从不同的源显示ListBox中的数据。我想制作一些像
这样的常见源代码接口interface IDataSource<T>
{
ObservableCollection<T> Elements { get; set; }
DataTemplate ElementDataTemplate { get; set; }
}
但我不知道哪种类型或类型应该用于IDataSource
。我可以将其设为UserControl
,但似乎没必要,因为我的DataSource
不是用户控件。主要问题是ElementDataTemplate
。我怎样才能从UserControl
课程中正确管理它?我是否应该关心另一个助手UserCntrol
类并调用类似(new MyUserControl).FindResource("ElementsDataTemplate")
)来获取数据模板,或者有更好的方法来保持并获得DataTemplate
?
答案 0 :(得分:0)
您只需在相应视图的资源部分中应用特定类型的数据模板:
<!-- Items may be of type ViewModel1 and ViewModel2 -->
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type vm:ViewModel1}">
<TextBlock Text="{Binding PropertyA}" />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ViewModel2}">
<TextBlock Text="{Binding PropertyB}" />
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
因此不需要界面。