C# 选择由对象类型确定的WPF数据模板

C# 选择由对象类型确定的WPF数据模板,c#,wpf,xaml,user-controls,datatemplate,C#,Wpf,Xaml,User Controls,Datatemplate,我有一个ViewModel,它有一个具有相同界面的对象列表,为了在视图中显示它们,我们在视图绑定到的视图模型中有一个UserControls列表。我想知道是否可以为列表中不同类型的具体对象创建一个模板,并让WPF为我应用正确的模板,而不是创建UserControl列表并绑定到该列表 基本上,我有: <StackPanel Margin="0,0,20,0" > <my2:P

我有一个ViewModel,它有一个具有相同界面的对象列表,为了在视图中显示它们,我们在视图绑定到的视图模型中有一个
UserControl
s列表。我想知道是否可以为列表中不同类型的具体对象创建一个模板,并让WPF为我应用正确的模板,而不是创建
UserControl
列表并绑定到该列表

基本上,我有:

<StackPanel 
            Margin="0,0,20,0"
            >                
            <my2:ProfileIdentificationView />
            <ItemsControl
                ItemsSource="{Binding Path=ProfileSections}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </StackPanel>
    </DockPanel>


其中ItemsSource绑定是用户控件的列表。我正在寻找一种基于ProfileSection类型应用这些UserControl的外观的方法。一种类型是IIS节,另一种类型是用户节。

您可以通过为视图模型创建implicit
DataTemplates
。确保使用
x:Type
标记扩展,因为字符串被解释为XML元素标记(以允许隐式XML模板化)。

因此,我需要做的就是在我的参考资料部分定义模板,并自动应用它们?@twreid:这很方便,我倾向于让应用程序通过反射将视图模型与其各自的视图连接起来来创建这样的隐式模板。是的,我正在浏览并更改一些我们创建的自定义控件,这使我的生活更容易直接绑定到视图模型列表,而不是用户控件列表。非常感谢您指出x:Type标记扩展的重要性。我错过了它,当添加它时,一切都很好。