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

wj8zmpe1  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(136)

我有两个usercontrol视图,它们是:Bmw.xamlAudi.xaml
在这两个xamls中,我添加了以下内容:

<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中是我的函数,为了保持简单,当Audi调用ViewModel时,我想将函数命名为Audi(),当BMW调用ViewModel时,我想将其命名为BMW()。
在viewModel类中有没有好的方法来知道它是属于audi还是bmw用户控件?因为依赖于此,必须执行不同的逻辑。
在此先谢谢您!

piztneat

piztneat1#

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

public enum Brands
{
    Audi,
    BMW,
    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);
}

相关问题