C# WPF MVVM 2 用户控制具有相同数据上下文和 ViewModel 的视图

C# WPF MVVM 2 Usercontrols views with the same data context and ViewModel

我有 2 个用户控件视图,它们是:Bmw.xamlAudi.xaml

在两个 xaml 中我添加了这个:

<UserControl x:Class=TestProject.Views.Fragments.Audi
             <!--The standard code generated by visual studio-->
             xmlns:viewModels="clr-namespace:TestProject.ViewModels"
        <Grid>
            <!--XAML CODE-->
        </Grid>
</UserControl>

在 bmw.caml.cs 和 audi.xaml.cs 中,我的构造函数中都有:

public Audi()
{
    InitializeComponent();
    this.DataContext = new BrandViewModel();
}

public BMW()
{
    InitializeComponent();
    this.DataContext = new BrandViewModel();
}

在 ViewModel 中是我的函数,为了简单起见,当 ViewModel 被奥迪调用时,我想调用函数 ActionAudi(),当它被宝马调用时,我想调用 ActionBMW()。

在viewModel中有什么好的方法可以知道class它是属于audi还是bmw usercontrol?因为依赖于此必须执行不同的逻辑。

提前致谢!

首先,创建一个枚举来定义您拥有的品牌。像这样

public enum Brands
{
    Audi,
    BMV,
    Vinfast
}

其次,将您的 ViewModel 的构造函数修改为这样的想法。

public BrandViewModel(Brands brand)
{
    // passing brand to a field or property
}

最后,通过您刚刚创建的新构造函数设置您的 DataContext。

public Audi()
{
    InitializeComponent();
    this.DataContext = new BrandViewModel(Brands.Audi);
}

public BMW()
{
    InitializeComponent();
    this.DataContext = new BrandViewModel(Brands.BMW);
}