寻找一种用mvvm显示很多功能的好方法

时间:2012-04-30 09:04:53

标签: c# wpf mvvm

我需要创建一个小的GUI应用程序来手动调用一些驱动程序命令。 总共有大约40个命令,其中一些有额外的参数。

请求是,所有命令都应该在一个页面上。除此之外,没有任何要求,因为它只是一个测试环境,用户体验只是一个小问题。

当我开始以“常规”方式进行操作时,只需为参数添加按钮和输入元素,我最终会得到一个非常混乱的UI。做一些像

这样的事情也是完全错误的
<Button Command="{Binding DriverCommand} CommandParameter=1/> 

对于所有40个命令

所以我的问题是,使用不同参数制作大量命令的好方法是什么? 我更喜欢MVVM方式,因为我想进一步学习这种模式。 我在viewmodel中拥有命令(作为枚举?)并且可以将其绑定到视图中的控件的实现将是理想的。然后,我可以使用不同的驱动程序重用UI(这是非常可能的事情)。

提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用类似于以下内容的内容:

查看的模型:

public class CommandDashboardViewModel
{
    public ObservableCollection<DriverCommandViewModel> DriverCommands { get; set; }
}

public class DriverCommandViewModel
{
    // all of these properties have to implement INPC
    public string CommandText { get; set; }
    public ICommand Command { get; set; }
    public object CommandParameter { get; set; }
}

查看:

<!-- the DataContext of this view is instance of CommandDashboardViewModel -->
<ItemsControl ItemsSource="{Binding DriverCommands}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content={Binding CommandText} Command={Binding Command} CommandParameter={Binding CommandParameter}/> 
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我把它放在了头顶,所以我为任何语法错误道歉。