вы можете использовать одну команду с одним параметром, который может быть проанализирован в методе команды.
Такой параметр может иметь тип enum, который объявлен с атрибутом Flags witrh:
[Flags]
private enum Tastes
{
None = 0,
Sugar = 1,
Milk = 1 << 1,
Capuccino = 1 << 2
}
xaml:
<Button Command="{Binding DrinkCommand}" CommandParameter="Capuccino"
Content="Capuccino" Style="{StaticResource DrinkButton}"/>
<Button Command="{Binding DrinkCommand}" CommandParameter="Capuccino, Sugar"
Content="Capuccino + sugar" Style="{StaticResource DrinkButton}"/>
<Button Command="{Binding DrinkCommand}" CommandParameter="Milk"
Content="Milk" Style="{StaticResource DrinkButton}"/>
<Button Command="{Binding DrinkCommand}" CommandParameter="Milk, Sugar"
Content="Milk + sugar" Style="{StaticResource DrinkButton}"/>
метод команды:
private void Drink(object args)
{
string x = (string)args;
if (x != null)
{
Tastes t = (Tastes)Enum.Parse(typeof(Tastes), x);
if (t.HasFlag(Tastes.Sugar))
{
Console.WriteLine("sweet");
}
}
}