【发布时间】:2022-01-23 15:54:33
【问题描述】:
我有 2 个用户控件视图,它们是:
Bmw.xaml 和 Audi.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 中有我的函数,为了简单起见,当奥迪调用 ViewModel 时,我想调用函数 ActionAudi(),而当宝马调用它时,我想调用 ActionBMW()。
有没有什么好办法可以在viewModel类中知道它是属于audi还是bmw usercontrol?因为根据这一点,必须执行不同的逻辑。
提前谢谢你!
【问题讨论】:
-
当您想要 BMW 和 Audi 的单独逻辑时,为什么要使用相同的 ViewModel 两次?
-
因为我还想对两个视图使用大致相同的逻辑,但也想使用一些单独的逻辑。
-
使用两者共享共同逻辑和道具的接口......或创建一个基类。您还可以向您的构造函数添加一个参数,以获取车辆制造并确定您需要做什么。
-
你是如何切换这些用户控件的?
-
我想在同一个窗口中显示两个用户控件。例如 BrandModel AudiModel = new BrandModel() 和 BrandModel BmwModel = new BrandModel()。我想在 Audi 用户控件中显示 AudiModel.On,在 Bmw 用户控件中显示 BmwModel.On。因为它们使用相同的模型,但值不必相同。 (模型中的数据来自 PLC。因此必须将 BMW 的数据加载到 BmwModel 实例中。)但是使用两个不同的 ViewModel 可能会更好?