我想通过CommandParameter
传递用户名。
<GridViewColumn Width="Auto" Header="UserName" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click" Content="..." CommandParameter="{Binding Path=UserName}"></Button> </DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
但在这里我不知道我必须用什么才能抓住它......
private void Button_Click(object sender, RoutedEventArgs e)
{
// How to get UserName here?
}
有任何线索吗?
谢谢!
答案 0 :(得分:2)
最好用这种方法做到这一点:
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = (Button) sender;
var userName = button.CommandParameter;
}
虽然它可以完成这项工作,但并不是CommandParameter
应该如何使用。 CommandParameter
应该作为参数传递给按钮的命令。因此,如果您使用Command
而非处理Button.Click
,则您的命令会在其Execute
和CanExecute
处理程序中接收您的数据。请参阅google中命令和按钮的示例。这是谷歌的第一个链接,例如:How to use Commands in WPF
答案 1 :(得分:2)
如果您要使用click处理程序,为什么不将Button的Tag属性绑定到UserName?与标签属性的意图相比,更多的是滥用命令主体。
<Button Click="Button_Click" Content="Button Content" Tag="{Binding UserName}"/>
private void Button_Click(object Sender, RoutedEventArgs e)
{
var Button = (Button)Sender;
var UserName = (string)Button.Tag;
}