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

本文关键字:显示 多功能 方法 mvvm 一种 寻找 | 更新日期: 2023-09-27 18:32:36

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

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

当我开始以"常规"方式执行此操作并为参数添加按钮和输入元素时,我最终会得到一个非常混乱的 UI。做这样的事情也感觉很不对

<Button Command="{Binding DriverCommand} CommandParameter=1/> 

对于所有 40 个命令

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

提前致谢

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

你可以选择类似于以下内容的内容:

视图模型:

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>

我已经把它放在我的头顶上,所以我对任何语法错误表示歉意。