我需要创建一个小的GUI应用程序来手动调用一些驱动程序命令。 总共有大约40个命令,其中一些有额外的参数。
请求是,所有命令都应该在一个页面上。除此之外,没有任何要求,因为它只是一个测试环境,用户体验只是一个小问题。
当我开始以“常规”方式进行操作时,只需为参数添加按钮和输入元素,我最终会得到一个非常混乱的UI。做一些像
这样的事情也是完全错误的<Button Command="{Binding DriverCommand} CommandParameter=1/>
对于所有40个命令
所以我的问题是,使用不同参数制作大量命令的好方法是什么? 我更喜欢MVVM方式,因为我想进一步学习这种模式。 我在viewmodel中拥有命令(作为枚举?)并且可以将其绑定到视图中的控件的实现将是理想的。然后,我可以使用不同的驱动程序重用UI(这是非常可能的事情)。
提前致谢
答案 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>
我把它放在了头顶,所以我为任何语法错误道歉。