抽象的用户控制

时间:2012-04-28 05:53:31

标签: c# wpf user-controls polymorphism abstract

我是WPF MVVM的新手。

我有一个名为MyButtonsView的用户控件,它继承自UserControl。此用户控件应显示另外两个用户控件。

我的viewmodel类很少: MyRedButtonViewModel,MyBlueButtonViewModel。 它们都来自名为MyAbsButtonViewModel的抽象类。此抽象视图模型强制所有派生视图模型实现属性名称GetImage。

在MyButtonsView的XAML中,我有一个应该有两行的网格。在第一行我想要MyRedButtonViewModel,在第二行我想要MyBlueButtonViewModel。两者都应在按钮内显示图像,该按钮绑定到GetImage属性。 (它是多态的)。

如何告诉XAML为每一行加载正确的视图模型?

是否有适当的方法来实现它。我很想改变我的设计。

1 个答案:

答案 0 :(得分:1)

您可以为两个按钮定义使用不同的ViewModel作为DataContext。

MyButtonsView绑定到MyButtonsViewModel,MyButtonsViewModel有两个属性MyBlueButtonViewModel和MyRedButtonViewModel。

在MyButtonsView中,你可以定义这样的东西:

<MyRedButton DataContext = "MyRedButtonViewModel" ..../>
<MyBlueButton DataContext = "MyBlueButtonViewModel" .../>