c# - 通过 CommandParameter 传递数据

标签 c# wpf xaml

我正在尝试通过 CommandParameter 传递 UserName

<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?
}

有什么线索吗?

谢谢!

最佳答案

您可以使用这种方法做的最好的事情是:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var button = (Button) sender;
    var userName = button.CommandParameter;
}

虽然它可以完成工作,但它不是 CommandParameter 应该使用的方式。 CommandParameter 应该作为参数传递给按钮的命令。因此,如果您将使用 Command 而不是处理 Button.Click,您的命令将在其 ExecuteCanExecute 中接收您的数据> 处理程序。请参阅 google 中命令和按钮的示例。例如,这是来自谷歌的第一个链接:How to use Commands in WPF

关于c# - 通过 CommandParameter 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255882/

相关文章:

wpf - WPF中的自定义文字包装

.net - WPF 中的用户控件位置

.net - WinUI3 应用程序抛出异常 - 我错过了什么?

c# - Xamarin.forms 如何在列表中显示彼此相邻的项目

c# - 在 C# 中将 Xml UTF-8 转换为 ISO-8859-9

c# - 在 Visual Studio 中不断得到 "Loading toolbox content from package",这需要永远!

c# - 为什么 C# 在基本构造函数之前设置私有(private)变量,而 VB.NET 却相反?

c# - 将字符串绑定(bind)到 TextBlock WPF - 我做错了什么?

c# - DataGridView 覆盖顶部,左侧标题单元格单击(全选)

c# - 如何检查滚动条当前在 WPF DataGrid 中是否可见?