Bor*_*ens 51 c# wpf click button .net-3.5
我有一个像这样的wpf按钮:
<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>
Run Code Online (Sandbox Code Playgroud)
我想将pass {Binding Code}作为参数传递给button1_click处理程序.
我该怎么做?
免责声明:WPF真的很新
Hei*_*nzi 116
简单方案:
<Button Tag="{Binding Code}" ...>
Run Code Online (Sandbox Code Playgroud)
在您的处理程序中,将sender对象强制转换Button并访问该Tag属性:
var myValue = ((Button)sender).Tag;
Run Code Online (Sandbox Code Playgroud)
更优雅的解决方案是使用WPF的命令模式:为希望按钮执行的功能创建命令,将Command绑定到Button的Command属性并绑定CommandParameter到您的值.
The*_*Man 16
我也许并不是'Tag'的粉丝
<Button Click="button1_Click" myParam="parameter1" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>
Run Code Online (Sandbox Code Playgroud)
然后通过属性访问.
void button1_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var theValue = button.Attributes["myParam"].ToString()
}
Run Code Online (Sandbox Code Playgroud)
ben*_*wey 10
那么有两种方法可以做到这一点:
转换DataContext
void button1_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var code = ((Coupon)button.DataContext).Code;
}
Run Code Online (Sandbox Code Playgroud)
或者使用Tag属性,它是一个通用的属性
<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Tag="{Binding Code}" />
Run Code Online (Sandbox Code Playgroud)
然后
void button1_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var code = button.Tag;
}
Run Code Online (Sandbox Code Playgroud)