Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 使用自定义用户控件时,对象引用未设置为对象的实例_Wpf_Vb.net_Nullreferenceexception - Fatal编程技术网

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

Wpf 使用自定义用户控件时,对象引用未设置为对象的实例,wpf,vb.net,nullreferenceexception,Wpf,Vb.net,Nullreferenceexception,我已经创建了一个自定义用户控件(JCUserControl),并且正在主窗口中使用它。我的主窗口没有代码隐藏 我在JCUserControl代码中有以下内容: Private Sub ImmediateRadioButton_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles ImmediateRadioButton.Checked SomeTextBox.IsEnabled = Fa

我已经创建了一个自定义用户控件(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,那么它运行时不会出现任何问题

有人能帮忙吗

编辑:

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

私有子ImmediateRadioButton_选中(发件人作为System.Object,e作为System.Windows.RoutedEventArgs)处理ImmediateRadioButton。选中

如果ImmediateRadioButton.IsLoaded,则 SomeTextBox.IsEnabled=False 如果结束
结束子

是不是很明显
SomeTextBox
null
,这是可能的,因为并非所有控件都可以同时初始化,如果
单选按钮
在解析顺序中出现较早,则其选中的事件可以在
文本框
退出之前触发

无论如何,您应该以更具声明性的方式处理此问题,例如,
TextBox.IsEnabled
RadioButton.IsChecked
或添加一个新的布尔属性并将两者绑定到该属性

e、 g.对于前者:



我不太确定该部分是否以声明的方式接近它。我对vb.net相当陌生。但是,当我在主窗口中有所有控件时,它怎么可能工作,而当它在用户控件中时却不工作呢?谢谢你的回答!:)@will0809:可能取决于解析器处理不同控件的方式,在任何情况下,这都不是您可以依赖的。阅读我提供的数据绑定链接,它是WPF的一个重要机制,通常允许您完全避免此类问题。