【发布时间】:2021-10-06 02:41:10
【问题描述】:
谁能解释一下如何在 WPF 中创建一个动态菜单(使用 MVVM)? 首先,我在屏幕的一半显示三个带有设备的按钮(相机、锅炉、传感器)。 该应用程序对每个按钮都有特殊的命令。 例如,如果我按下相机按钮 - 我会在屏幕的第二部分显示相机屏幕。如果我按下锅炉按钮 - 我会显示锅炉屏幕而不是相机屏幕。
我已经完成了,但是对于每个设备,我在我的 XAML 中单独完成了。
<StackPanel>
<Button Content="Camera"
Command="{Binding NavigationCameraCommand}"
Margin="5"
Height="30"/>
<Button Content="Boiler".../>
</StackPanel>
<ContentControl Grid.Column="1" Content="{Binding CurrentViewModel}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type viewmodels:CameraViewModel}">
<views:CameraView/>
</DataTemplate>
...
</ContentControl>
但是如果我添加一个新设备,我必须重写主窗体中的代码,因此我想动态地执行它。我在主视图模型中创建了设备集合并尝试在 XAML 中使用此集合。
<ItemsControl ItemsSource="{Binding Devices}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Path=Name}"
Command="{?}}}"
Margin="5" Height="30"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是我不知道如何将命令绑定到按钮。我的主视图模型中有三个命令(OpenCameraScreenCommand、OpenBoilerScreenCommand、OpenSensorScreenCommand),它在静态菜单中没有任何问题,但我不知道如何在动态菜单中使用它...
【问题讨论】: