【发布时间】:2011-01-19 09:02:51
【问题描述】:
我正在使用 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 上的一些向导知道:-)。
有意义吗?
【问题讨论】:
-
我不明白你想这样做。你绑定一个点击事件处理程序会给你什么,你不能用这个硬编码来做。我可以看到,使用命令可以帮助您分离 xaml 和背后的代码,但不能帮助您执行绑定事件处理程序。
标签: silverlight xaml windows-phone-7 triggers mvvm-light