1

UserNameをで渡そうとしています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?
}

どんな手掛かり?

ありがとうございました!

4

2 に答える 2

2

クリック ハンドラーを使用する場合は、ボタンの Tag プロパティを UserName にバインドしてみませんか? Commanding プリンシパルの誤用よりも、Tag プロパティが意図されていたものにもう少し沿っています。

<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;
}
于 2012-11-06T20:51:06.603 に答える
2

このようなアプローチでできる最善のことは次のとおりです。

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

それは仕事をしますが、それはどのように使用されることになっているのではありませんCommandParameter. CommandParameterボタンのコマンドにパラメーターとして渡されることになっています。したがって、コマンドCommandを処理する代わりに使用する場合、そのおよびハンドラーButton.Clickでデータを受け取ります。Google のコマンドとボタンのサンプルを参照してください。たとえば、Googleからの最初のリンクは次のとおりです。WPFでコマンドを使用する方法ExecuteCanExecute

于 2012-11-06T17:20:37.080 に答える