WPF RadioButton单击使用RaiseEvent

时间:2015-04-22 20:16:02

标签: c# wpf radio-button routed-events

我们有一个从RadioButton继承的简单控件。我想以程序方式检查它。

如果是按钮我们会点击,我们通常会这样做。

pip

所以我想我可以使用RadioButton进行以下操作。

Button MyButton = ...
MyButtonClickArgs = new RoutedEventArgs(Button.ClickEvent, MyButton);
MyButton.RaiseEvent(MyButtonClickArgs);

然而,没有这样的运气。任何人都知道我做错了什么。

更新 进一步探索后会出现正在调用OnChecked事件处理程序。但是,IsChecked状态为false(因此它没有按照我的预期执行)。如果IsChecked为false,我希望在调用事件处理程序时它是真的。如果我实际点击按钮,至少就是这种行为。

1 个答案:

答案 0 :(得分:1)

在你的例子中,你只是在发射一个事件。关闭事件不会自动将单选按钮的值设置为IsChecked:true。 Button Click的示例很好,但是对于单选按钮,您不需要显式触发事件。您可以直接设置属性IsChecked = true

radioButton.IsChecked = true;

这将检查单选按钮并触发调用Checked事件处理程序的事件。

当你在物理上检查按钮时,它会设置属性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 Source Code