WPF MVVM在ViewModel中存储用户控件?一个大禁忌?

Chr*_*isO 2 c# wpf mvvm

我试图在我的主窗口中托管用户控件,但我很难决定如何将它实现到我的视图模型中.

首先,我为用户控件创建了一个单独的视图模型,并在将其托管到以下内容之前使用数据模板将其映射到控件ContentControl:

数据模板:

<DataTemplate DataType="{x:Type viewModels:TaskbarIconViewModel}">
    <tb:TaskbarIcon/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

XAML:

<ContentControl Content="{Binding TaskbarIconViewModel}"/>
Run Code Online (Sandbox Code Playgroud)

如果我要使用此设置,我将如何调用用户控件上的方法以及如何在XAML或视图模型中设置用户控件的属性?

其次,我有想法在视图模型中保持用户控件,然后再将其绑定到一个ContentControl.这对我和MVVM来说似乎不对.这是正确的吗?在视图模型中保持控件是否可以接受?

在视图模型中:

public TaskbarIcon TaskbarIcon { get; set; }
Run Code Online (Sandbox Code Playgroud)

XAML:

<ContentControl Content="{Binding TaskbarIcon}"/>
Run Code Online (Sandbox Code Playgroud)

什么是最好的行动方案?

Lou*_*ann 5

在ViewModel中存储UserControl:一个很大的禁忌?
ViewModel不应该知道该视图.

你所说的是PRISM的地区所做的,不要重新发明轮子;)