Wpf 使用自定义用户控件时,对象引用未设置为对象的实例
我已经创建了一个自定义用户控件(JCUserControl),并且正在主窗口中使用它。我的主窗口没有代码隐藏 我在JCUserControl代码中有以下内容: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
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的一个重要机制,通常允许您完全避免此类问题。