WPF radiobutton事件处理问题

WPF radiobutton事件处理问题,wpf,events,Wpf,Events,radio.Checked+=新的路由EventHandler(Variatchecked) 假设我有这个代码。如果我想将一个参数传递给VariantChecked方法,该怎么办。我应该应用什么语法 在创建过程中,将数据对象附加到RadioButton的DataContext或Tag属性 RadioButton radio=new RadioButton(); radio.DataContext=yourData; 然后在事件处理程序中,取回数据: void VariantChecked(ob

radio.Checked+=新的路由EventHandler(Variatchecked)

假设我有这个代码。如果我想将一个参数传递给VariantChecked方法,该怎么办。我应该应用什么语法

在创建过程中,将数据对象附加到RadioButton的DataContext或Tag属性

RadioButton radio=new RadioButton();
radio.DataContext=yourData;
然后在事件处理程序中,取回数据:

void VariantChecked(object sender, RoutedEventArgs e){ 
   RadioButton  radio=(RadioButton)sender; 
   YourData yourData=(YourData)radio.DataContext; 
}
在上面的示例中,我假设您想要提供一个名为YourData的类或结构。您可以通过任何原语(如字符串、int或任何其他对象类型)来替换它


上述内容也适用于xaml:

<RadioButton Tag="Static Data, could also be a binding" ...

顺便说一下,您可以通过不指定具体的控件类而指定基类来使代码更通用:

void VariantChecked(object sender, RoutedEventArgs e){    
   FrameworkElement fe=(FrameworkElement)sender;    
   string yourStringFromTag=(string)fe.Tag; 
}

希望这有帮助…

在上一个示例中,您是如何使用标记附加属性的?是否可以将多个对象附加到它上?@Sergey:在第二个示例中,我是通过xaml实现的。在3。例如,我没有附上。这个例子只是为了说明您不必强制转换到具体类,还可以使用基类。如果要附加多个对象,请声明结构、容器类或使用元组类()
void VariantChecked(object sender, RoutedEventArgs e){    
   FrameworkElement fe=(FrameworkElement)sender;    
   string yourStringFromTag=(string)fe.Tag; 
}