Я использую команды Mvvm-Light для маршрутизации событий из моих представлений в мои модели представления.Прекрасно работает.
Но я думаю, что могу быть более элегантным.На самом деле это, вероятно, просто стандартный вопрос XAML:
Я хочу изменить это (10 кнопок все с Click="keypadButton_Click"
для их обработчика событий):
<Button Name="button1" Content="1" Grid.Row="0" Grid.Column="0" Click="keypadButton_Click" />
<Button Name="button2" Content="2" Grid.Row="0" Grid.Column="1" Click="keypadButton_Click"/>
<Button Name="button3" Content="3" Grid.Row="0" Grid.Column="2" Click="keypadButton_Click"/>
<Button Name="button4" Content="4" Grid.Row="1" Grid.Column="0" Click="keypadButton_Click"/>
<Button Name="button5" Content="5" Grid.Row="1" Grid.Column="1" Click="keypadButton_Click"/>
<Button Name="button6" Content="6" Grid.Row="1" Grid.Column="2" Click="keypadButton_Click"/>
<Button Name="button7" Content="7" Grid.Row="2" Grid.Column="0" Click="keypadButton_Click"/>
<Button Name="button8" Content="8" Grid.Row="2" Grid.Column="1" Click="keypadButton_Click"/>
<Button Name="button9" Content="9" Grid.Row="2" Grid.Column="2" Click="keypadButton_Click"/>
<Button Name="button0" Content="0" Grid.Row="3" Grid.Column="1" Click="keypadButton_Click"/>
До 10 из них:
<Button x:Name="button1" Content="1" Grid.Row="0" Grid.Column="0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<Command:EventToCommand
Command="{Binding KeyPadButtonCommand}"
CommandParameter="{Binding ElementName=button1, Path=Content }"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
Но я не хочу много XAML.Я бы подумал, что был бы способ «макросизировать» триггер, чтобы он выглядел примерно так:
<Button Name="button1" Content="1" Grid.Row="0" Grid.Column="0"
Click="{Binding _SendTheEventHere_}" />
Где "{Binding _SendTheEventHere_}"
следует заменить каким-то магическим заклинанием, о котором я не догадываюсь, но язнаю, какой-то мастер здесь по stackoverflow знает: -).
Имеет смысл?