将参数添加到button单击事件
我有一个像这样的wpfbutton:
<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>
我想传递{Binding Code}
作为parameter passing给button1_click处理程序。
我如何去做这件事?
免责声明:对WPF来说真的很新鲜
简单的scheme:
<Button Tag="{Binding Code}" ...>
在您的处理程序中,将sender
对象转换为Button
并访问Tag
属性:
var myValue = ((Button)sender).Tag;
一个更优雅的解决scheme是使用WPF的命令模式 :为您希望button执行的function创build一个命令,将Command绑定到Button的Command
属性并将CommandParameter
绑定到您的值。
我也不是“标记”的粉丝
<Button Click="button1_Click" myParam="parameter1" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>
然后通过属性访问。
void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var theValue = button.Attributes["myParam"].ToString() }
那么这样做有两种方法:
投射DataContext
void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var code = ((Coupon)button.DataContext).Code; }
或者使用一个通用的状态属性的标签属性
<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Tag="{Binding Code}" />
然后
void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var code = button.Tag; }