Ниже вы видите stackPanel, где пользователь должен выбрать опцию из перечисления с помощью переключателей. Итак, CoffeeStrength - это перечисление, и с помощью конвертера я могу установить правильное значение.
<StackPanel Grid.Column="0" Orientation="Vertical" HorizontalAlignment="Center">
<Label FontWeight="Bold">Strength</Label>
<RadioButton GroupName="Strength" IsChecked="{Binding Path=CoffeeStrength, Converter={StaticResource EnumToBool}, ConverterParameter=Weak}">Weak</RadioButton>
<RadioButton GroupName="Strength" IsChecked="{Binding Path=CoffeeStrength, Converter={StaticResource EnumToBool}, ConverterParameter=Normal}">Normal</RadioButton>
<RadioButton GroupName="Strength" IsChecked="{Binding Path=CoffeeStrength, Converter={StaticResource EnumToBool}, ConverterParameter=Strong}">Strong</RadioButton>
</StackPanel>
Ниже вы видите мою кнопку, которая использует собственный класс в качестве CommandParameter. Я хотел бы добавить значение выше (CoffeeStrength) в качестве дополнительного параметра в этой команде вместо сохранения значения CoffeeStrength в моей ViewModel (см. Привязку).
<Button Content="Cappuccino + sugar"
Command="{Binding DrinkCommand}"
Style="{StaticResource DrinkButton}">
<Button.CommandParameter>
local:DrinkCommandParameters Name="Cappuccino" Milk="False" Sugar="True"/>
</Button.CommandParameter>
</Button>
Другими словами, я хотел быудалить свойство CoffeeStrength из моей ViewModel и передать его только в DrinkCommand. Так как мне нужно знать значение только при активации команды. Ниже вы видите перечисление и ненужные? недвижимость в viewmodel. Установщик никогда не используется в коде, так как пользователь решает силу.
public enum Strength
{
Normal = 0, Weak, Strong
}
private Strength _coffeeStrength;
public Strength CoffeeStrength
{
get { return _coffeeStrength; }
set { _coffeeStrength = value; RaisePropertyChanged(() => CoffeeStrength); }
}
Есть ли способ удалить свойство CoffeeStrength из ViewModel и передать значение непосредственно DrinkCommand в XAML?