如何根据用户选择动态注入用户控件

| 我的窗口上有一个“ 0”控件,根据用户选择的选项,应显示一个用户控件(确定要显示的用户控件是否完整)。我在弄清楚如何实际显示用户控件时遇到问题。本质上,用户将从“ 0”中选择项目,并根据选择出现一个用户控件(在我假设的“ 2”控件中)。 当前,要打开新窗口,我有一个窗口适配器,可以在其中动态创建新窗口并设置父窗口。 如何在视图模型中完成此操作? 编辑 我相信这是Rachel在提到使用ѭ3代替时所谈论的内容。不用担心我的
DataTemplates
而不是
DataType
属性。那只是我的项目的名字。
<Window.Resources>
    <DataTemplate DataType=\"{x:Type DataTemplates:FooEditorViewModel}\">
        <DataTemplates:FooControl></DataTemplates:FooControl>
    </DataTemplate>
    <DataTemplate DataType=\"{x:Type DataTemplates:BarEditorViewModel}\">
        <DataTemplates:BarControl></DataTemplates:BarControl>
    </DataTemplate>
</Window.Resources>
这是一个示例视图模型。
public class ViewModel
{
    public IEditorViewModel Editor
    {
        get
        {
            return new BarEditorViewModel();
        }
    }
}
并将其与
<ContentControl Content=\"{Binding Editor}\" />
为了返回不同的用户控件编辑器,我必须创建一个名为
IEditorViewModel
的空白接口。不知道是否有解决办法。 希望这对某人有帮助。     
已邀请:
        您的SelectedTreeViewItem将存储在ViewModel中,并且该值将用于确定要显示的项目。 例如:
<ContentControl Content=\"{Binding SelectedItem}\">
    <ContentControl.Style>
        <Style TargetType=\"{x:Type ContentControl}\">
            <Setter Property=\"ContentTemplate\" Value=\"{StaticResource DefaultTemplate}\" />
            <Style.Triggers>
                <DataTrigger Binding=\"{Binding SelectedItem}\" Value=\"{x:Type local:ItemA}\">
                    <Setter Property=\"ContentTemplate\" Value=\"{StaticResource TemplateA}\" />
                </DataTrigger>
                <DataTrigger Binding=\"{Binding SelectedItem}\" Value=\"{x:Type local:ItemB}\">
                    <Setter Property=\"ContentTemplate\" Value=\"{StaticResource TemplateB}\" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ContentControl.Style>
</ContentControl>
更好的替代方法是将DataTemplates用于不同的Item。然后只需设置
Content=\"{Binding SelectedItem}\"
,WPF就会解析要使用的正确DataTemplate。我刚刚展示了上面的示例,因为它可用于将Template设置为SelectedItem属性的基础     

要回复问题请先登录注册