Wpf 在ViewModel中控制多个按钮的属性

Wpf 在ViewModel中控制多个按钮的属性,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有18个按钮在一个统一的网格在我的主WPF窗口。我需要在程序加载和运行期间修改按钮的许多属性和命令。换句话说,当程序首次启动时,会选择影响布局的配置。稍后,这可能会进一步改变,具体取决于程序的运行方式。我正在尝试整合ViewModel中的所有逻辑。因此,一个简单的问题是——如何最好地实现这个设计 一些想法: 可以使用传统绑定。这是有效的,除非你能得到100个。此外,每个属性中都会有丑陋的逻辑-即,如果config1,则背景为红色,否则如果config2或3,则背景为蓝色 可以限制ValueCo

我有18个按钮在一个统一的网格在我的主WPF窗口。我需要在程序加载和运行期间修改按钮的许多属性和命令。换句话说,当程序首次启动时,会选择影响布局的配置。稍后,这可能会进一步改变,具体取决于程序的运行方式。我正在尝试整合ViewModel中的所有逻辑。因此,一个简单的问题是——如何最好地实现这个设计

一些想法:

可以使用传统绑定。这是有效的,除非你能得到100个。此外,每个属性中都会有丑陋的逻辑-即,如果config1,则背景为红色,否则如果config2或3,则背景为蓝色

可以限制ValueConverters和CommandParameters绑定的数量,但是您的属性逻辑更混乱

可以绑定到按钮的样式。这可以简化特性设置,但最终会导致一系列样式混乱。在程序加载后也不能很好地工作。我不认为在应用程序后可以更改样式

可以有一个不同的统一网格,每个网格具有一组18个按钮,用于每个配置,然后仅显示所选的一个。这简化了属性逻辑,但弄乱了XAML

可以将按钮对象本身传递给ViewModel。我不知道如何实现它,而且我认为它打破了MVVM模式。如果我知道怎么做可能是最简单的


我找不到一个优雅的解决方案。我肯定我遗漏了一些简单的东西。欢迎提出任何意见。谢谢。

以下是我在这种情况下所做的:

由于每个按钮上都有几个要绑定的属性,包括一个命令,因此我将为每个按钮创建一个单独的小型ViewModel MyButtonViewModel,其中包括属性和命令

然后,在主视图模型中,我将创建按钮视图模型的集合ObservableCollection,并使用一些简单的循环或LINQ代码填充它

然后,在视图中,我将声明一个ItemsControl以使用UniformGrid的ItemPanel。然后,对于ItemTemplate,我将定义绑定到MyButtonViewModel中属性的按钮

简单、小巧、优雅

如果您需要任何澄清,请告诉我,
B

有趣的概念。谢谢你的意见。我感谢你的帮助。我会研究这个想法,并让你知道结果如何。