tags:

views:

144

answers:

2

I have a wpf button like this:

<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>

And I want to pass {Binding Code} passed as parameter to the button1_click handler.
How do I go about this?

Disclaimer: really new to WPF

+4  A: 

Simple solution:

<Button Tag="{Binding Code}" ...>

In your handler, cast the sender object to Button and access the Tag property:

var myValue = ((Button)sender).Tag;

A more elegant solution would be to use the Command pattern of WPF: Create a Command for the functionality you want the button to perform, bind the Command to the Button's Command property and bind the CommandParameter to your value.

Heinzi
The tag will do for now and for more complicated scenarios I will look into the command pattern. Thanks
borisCallens
+2  A: 

Well there are two ways of doing this:

Cast the DataContext

 void button1_Click(object sender, RoutedEventArgs e)
 {
    var button = sender as Button;
    var code = ((Coupon)button.DataContext).Code;
 }

Or use the Tag property which is a generic state property

 <Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Tag="{Binding Code}" />

then

void button1_Click(object sender, RoutedEventArgs e)
{
    var button = sender as Button;
    var code = button.Tag;
}
bendewey