WPF从按钮传递按钮内容?

时间:2014-03-07 07:06:44

标签: c# wpf xaml button

假设我有两个按钮定义如下:

<Button Content="ButtonA" Command="{Binding [SomeTerminal].SomeCommand}"/>
<Button Content="ButtonB" Command="{Binding [SomeTerminal].SomeCommand}"/>

我可以知道是否可以获取按钮的内容?用户单击第一个按钮时的含义,我可以使用ButtonA方法获取SomeCommand吗?

3 个答案:

答案 0 :(得分:5)

在“纯粹的”MVVM解决方案中,您需要将数据放入ViewModel并将按钮的内容绑定到此数据以显示它。然后,您还可以通过Command参数将绑定数据传递给命令。

<Button Content="{Binding SomeDataA}" 
        Command="{Binding [SomeTerminal].SomeCommand}" 
        CommandParameter="{Binding SomeDataA}" />
<Button Content="{Binding SomeDataB}" 
        Command="{Binding [SomeTerminal].SomeCommand}" 
        CommandParameter="{Binding SomeDataB}" />

从View获取UI数据被认为是不好的做法,因为它在View上的ViewModel中创建了一个依赖项,使其更难测试。

答案 1 :(得分:1)

您可以使用CommandParameter:

<Button Content="ButtonA" Command="{Binding [SomeTerminal].SomeCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content}" />
<Button Content="ButtonB" Command="{Binding [SomeTerminal].SomeCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content}" />

答案 2 :(得分:1)

你可以使用它,

<Button x:Name="BtnA" Content="ButtonA" Command="{Binding [SomeTerminal].SomeCommand}" CommandParameter="{Binding ElementName=BtnA, Path=Content}" />

<Button Content="ButtonA" Command="{Binding [SomeTerminal].SomeCommand}" CommandParameter="{Binding Path=Content, RelativeSource={RelativeSource Self}}" />