我有一个带有几个 RadioButtons 的简单 WPF 页面,每个 RadioButton 都注册了一个Checked
事件处理程序,以便在更改选择时可能会发生某些事情。默认情况下,我希望选择这些 RadioButtons 之一,因此我已将IsChecked
属性设置为True
在 xaml 中。像这样的东西:
<RadioButton Checked="Radio_Checked" IsChecked="True">One</RadioButton>
<RadioButton Checked="Radio_Checked">Two</RadioButton>
这样做的问题是,在InitializeComponent
属性IsChecked
导致事件触发期间,这会导致空引用异常,因为我的事件处理程序尝试使用尚未初始化的元素。
目前,我通过检查IsInitialized
我的处理程序中的页面是否如下解决了这个问题:
private void Radio_Checked(object sender, RoutedEventArgs e)
{
if (this.IsInitialized)
{
if(MyRadioButton.IsChecked.GetValueOrDefault())
{
//SomeOtherElement is not initialized yet so it is null
SomeOtherElement.Visibility = Visibility.Visible;
}
}
}
我想避免if (this.IsInitialized)
在我的所有事件处理程序中使用,因为这是我在 WinForms 中从未做过的事情。
所以我的问题是,我可以用不同的方式处理这个问题,而不必向我的所有事件处理程序添加额外的代码吗?