处理许多类似的ICommand实现?

时间:2011-11-17 09:22:34

标签: mvvm command

我正在使用MVVM并使用许多类似的命令遇到以下问题。

我想制作许多用于展示不同类别书籍的按钮。

该模型是关于一本书的一些数据,比如说,

class book 
{
    string name;
    string author;
    .....
    .....
    string category;
}

存储书籍列表。 GUI用于用户查看具有不同类别的书籍。因此,创建了每个类别的按钮。例如:

Buttons:

Comic
Social
Academic
Science
Leisure
Political
Cartoon
Gambling
Magazine
All

我必须创建大约10个按钮。 (9个类别,1个用于查看全部)

在MVVM中,每个按钮都有自己的命令。从那时起,ViewModel中将有10个命令。但是,它的编码9非常相似,只有该类别的差异。

所以,我想问一下是否有任何建议/方法可以让它更节省代码?

我确实有一个想法。那就是将所有命令合并为一个。但是,此方法需要View(Xaml)将每个按钮中的CommandParameter传递给one命令,以便区分不同的类别。这将使XAML更复杂,并增加与ViewModels / Business逻辑的耦合级别。

那么,会有更简洁的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Microsoft.Practices.Composite.Presentation.dll中的DelegateCommand并使用CommandParameter

    <Button Command="{Binding bookCmd}"  CommandParameter="Comic">
    <Button Command="{Binding bookCmd}"  CommandParameter="Music">
    <Button Command="{Binding bookCmd}"  CommandParameter="News">


private DelegateCommand<string> _bookCmd;

_bookCmd= new DelegateCommand<string>(ExecuteBookCmd);

private void ExecuteBookCmd(string category)
{
 //Have fun
}