MVVM デザイン パターンを使用して WPF アプリケーションを開発しています。アプリケーションには、複数のボタンを表示する ItemsControl があります (アプリケーションのロジック フローによると、ボタンの数は一定ではありません)。ItemsControl は ViewModel の LinkedList にバインドされます。ボタンのコマンドを定義でき、コマンドにパラメーターがない場合にのみ ViewModel 内でコマンド ハンドラーを取得できます...どのボタンがクリックされたかを知る必要があるため、パラメータ付きのコマンド。
View を定義するにはどうすればよいですか? CommandParameter の構文と、ボタンのコンテンツを取得するために使用できるパラメーターは何ですか? ViewModel の Command シグネチャは何になりますか?
MVVM Light の RelayCommand を使用していることに注意してください。ビューの関連コードはこちらです。前もって感謝します
<UserControl x:Class="Museum.Controls.CategoriesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="130" d:DesignWidth="418">
<UserControl.Resources>
<DataTemplate x:Key="CategoriesButtonsTemplate">
<Button Content="{Binding }"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=DataContext.CategorySelectedCommand}"
/>
</DataTemplate>
</UserControl.Resources>
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height=" 40"></RowDefinition>
<RowDefinition Height=" 40"></RowDefinition>
</Grid.RowDefinitions>
<Grid x:Name="SubSubjectGrid" Grid.Row="0"></Grid>
<Grid x:Name="CategoriesGrid" Grid.Row="1">
<ItemsControl Grid.Row="1"
ItemsSource="{Binding Path=CategoriesButtons}"
ItemTemplate="{StaticResource CategoriesButtonsTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
<Grid x:Name="SelectedCategoryGrid" Grid.Row="2"></Grid>
</Grid>
</UserControl>