使用自定义用户控件时,对象引用未设置为对象的实例

时间:2012-02-10 05:52:48

标签: wpf vb.net nullreferenceexception

我创建了一个自定义用户控件(JCUserControl),我在主窗口中使用它。而我的主窗口没有代码隐藏。

我在JCUserControl代码隐藏中有这个:

Private Sub ImmediateRadioButton_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles ImmediateRadioButton.Checked
    SomeTextBox.IsEnabled = False
End Sub

当我运行它时,它会因NullReferenceException而失败。如果我注释掉SomeTextBox.IsEnabled = false,它会毫无问题地运行。

有人可以帮忙吗?

编辑:

发现我可以在做任何我想做的事情之前检查单选按钮是否已加载。

Private Sub ImmediateRadioButton_Checked(sender As System.Object,e As System.Windows.RoutedEventArgs)处理ImmediateRadioButton.Checked

如果ImmediateRadioButton.IsLoaded那么     SomeTextBox.IsEnabled = False 万一 结束子

1 个答案:

答案 0 :(得分:0)

不是很明显吗? SomeTextBoxnull,这是可能的,因为并非所有控件都可以同时初始化,如果RadioButton出现在解析顺序的前面,则其检查事件可以在{{1}之前触发退出。

无论如何,你应该更加公开地接受这个,例如: TextBox TextBox.IsEnabled RadioButton.IsChecked或添加新的布尔属性并将其绑定到该属性。

e.g。对于前者:

<RadioButton Name="rb"/>
<!-- Apply Binding.Converter as needed, or use a DataTrigger instead -->
<TextBox IsEnabled="{Binding IsChecked, ElementName=rb}"/>