2012-11-02 19 views
1

首先,我是WPF和MVVM的新手。我有这样从UI中选择类型的最佳实践

Interface IItemType 
{ 
    bool save() 
} 

接口和我有它们从该接口继承的三个具体的类

Public Class Type1:IItemType 
{ 
    public bool save() 
    { 
    //save something with method 1 
    } 
} 

Public Class Type2:IItemType 
{ 
    public bool save() 
    { 
    //save something with method 2 
    } 
} 

我有三个单选按钮(它们可以在将来扩展到4,5或更多)在我想要选择Save Method(类别Type1Type2)的View中,通过选择其中一个RadioButton。 问题是我如何将这些收音机绑定到我的ViewModel以不违反像OCP等模式设计(如将来我想添加更多类型和收音机)?

符合MVVM最佳实践设计?

**编辑**

想象我有以下的物业

Public IItemType CurrentType { get; set; } 

我想把类Type1到CurrentType属性时,第一个无线电选择 ,把类Type2到CurrentType第二台收音机被选中时的属性等等。

回答

2

你为什么不利用RelayCommand模式

阅读关于全模式的细节:WPF Apps With The Model-View-ViewModel Design Pattern 公共类RelayCommand:ICommand的 {// 代码realted ICommand接口 }

RelayCommand _saveCommand; 
public ICommand SaveCommand 
{ 
    get 
    { 
     if (_saveCommand == null) 
     { 
      _saveCommand = new RelayCommand(param => this.Save(), 
       param => this.CanSave); 
     } 
     return _saveCommand; 
    } 
} 

BIND命令像

<Hyperlink Command="{Binding Path=SaveCommand}"> 
+0

首先,用户选择一个Radibutton,然后他/她点击一个按钮,例如做他/她想要的。我可以使用RelayCommand吗?我可以把它放在具体的课堂上吗? –

+0

@MehrdadKamelzadeh - 一旦您对此有所了解并相应地修改代码,它会更好地阅读文章。 –