我有一个功能区复选框和一个功能区单选按钮。选中CheckBox后,RadioButton将被禁用并显示为灰色。这本来应该很简单(请参见以下代码),但是在程序编译时,它始终显示错误:
“你调用的对象是空的。”
我不太了解。以下是我的代码:
<ribbon:RibbonCheckBox Unchecked="CheckBox1_Unchecked"
Checked="CheckBox1_Checked" IsChecked="True"
Label="Foo" />
<ribbon:RibbonRadioButton x:Name="radioButton1" Label="=Santa" />
private void CheckBox1_Checked(object sender, RoutedEventArgs e)
{
radioButton1.IsEnabled = false; // this is where exception is thrown
}
最佳答案
加载控件时,首先创建CheckBox,然后创建RadioButton。该事件可能在设置radioButton1之前就已挂起。您可以通过从XAML临时删除IsChecked = true来验证这一点。
这里有几个选择:
数据绑定-使用IsChecked属性自动更新您的单选按钮,而无需代码。您需要命名复选框。
IsEnabled =“ {绑定IsChecked,ElementName = checkBox1,Mode = OneWay}”
在现有代码中检查是否为空-
如果(radioButton1!= null)
{
radioButton1.IsEnabled = false;
}
在Loaded事件完成后,更新了radioButton状态。
私人布尔isLoaded;
受保护的重写OnLoaded(...)
{
this.isLoaded = true;
}
私有无效CheckBox1_Checked(对象发送者,RoutedEventArgs e)
{
如果(this.isLoaded)
{
radioButton1.IsEnabled = false; //这是引发异常的地方
}
}
首选方法通常是#1。