我们有一个从RadioButton继承的简单控件。我想通过程序检查一下。
如果它是一个按钮,我们会点击,我们通常会这样做。
Button MyButton = ...
MyButtonClickArgs = new RoutedEventArgs(Button.ClickEvent, MyButton);
MyButton.RaiseEvent(MyButtonClickArgs);所以我想我可以用RadioButton来做下面的事情。
RadioButton MyButton = ...
MyButtonClickArgs = new RoutedEventArgs(RadioButton.CheckedEvent, MyButton);
MyButton.RaiseEvent(MyButtonClickArgs);然而,没有这样的运气。谁知道我做错了什么。
更新:在进一步探索后确实会显示OnChecked事件处理程序正在被调用。但是,IsChecked状态是假的(因此它没有执行我期望的那样)。如果IsChecked为false,则在调用事件处理程序时,它将为true。如果我按一下按钮,至少这就是我的行为。
发布于 2015-04-22 20:36:09
在您的示例中,您只触发了一个事件。触发事件不会自动将Radio的值设置为IsChecked: true。您的Button单击示例很好,但是对于Radio,您不需要显式地触发事件。可以直接设置属性IsChecked = true
radioButton.IsChecked = true;这将检查单选按钮,并触发事件调用选中的事件处理程序。
当您实际检查按钮时,它将设置属性IsChecked,而不只是触发事件。
从WPF中添加收音机按钮源代码的相关部分
/// <summary>
/// This override method is called from OnClick().
/// RadioButton implements its own toggle behavior
/// </summary>
protected internal override void OnToggle()
{
IsChecked = true;
} Radion Button源代码
https://stackoverflow.com/questions/29807912
复制相似问题