WPF组织数据模板

时间:2014-03-03 04:00:29

标签: c# wpf

我正在编写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

1 个答案:

答案 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>

因此不需要界面。