停止在页面加载上触发事件

时间:2014-12-06 09:46:25

标签: c# events windows-phone-8.1

我有一个带有IsChecked="true"属性和Checked事件的CheckBox:

<CheckBox Checked="myChBox_Checked" IsChecked="True" />

我不想在页面加载时触发Checked事件。因为我在方法中使用其他控件,我得到NullReferenceException

private void myChBox_Checked(object sender, RoutedEventArgs e) {
    myComboBox ... // NullReferenceException
}

我该怎样做才能阻止启动时的触发?

2 个答案:

答案 0 :(得分:2)

您可以例如:

  • 订阅 Page.Loaded 事件:

    this.Loaded += (sender, e) => myChBox.Checked += myChBox_Checked;
    
  • 或者更好的方法是检查您的活动null

    private void myChBox_Checked(object sender, RoutedEventArgs e)
    {
         if (something == null) return;
         myComboBox ... // NullReferenceException
    }
    

答案 1 :(得分:1)

您可以在事件处理程序中检查空引用,或者在页面Loaded事件处理程序中指定它:

public partial class MyPage : Page 
{
    public MyPage()
    {
        InitializeComponent();
        this.Loaded += page_Loaded;
    }

    private void page_Loaded(object sender, RoutedEventArgs e)
    {
        myChBox.Checked += myChBox_Checked;
    }

    private void myChBox_Checked(object sender, RoutedEventArgs e) 
    {
        if (myComboBox != null)
        {
           myComboBox ... // Should not be null, but check anyway
        }
    }

}

相关问题