2012-07-25 81 views
0

我有两个单选按钮,如果我把属性IsChecked放在XAML中,程序崩溃时出现System.NullReferenceException异常。附加信息:未将对象引用设置为对象的实例。System.NullReferenceException(单选按钮)

我的单选按钮:

<RadioButton IsChecked="True" Name="Mint" Checked="Mint_Checked_1" 
    Foreground="Red" FlowDirection="RightToLeft" VerticalAlignment="Top" 
    HorizontalAlignment="Right" Margin="10,30,10,0" GroupName="Update_When" 
    Content="A"> 
</RadioButton> 

<RadioButton IsChecked="False" Name="Changet" Checked="Changet_Checked_1" 
    FlowDirection="RightToLeft" VerticalAlignment="Top" HorizontalAlignment="Right" 
    Margin="10,53,10,0" GroupName="Update_When" Content="B"> 
</RadioButton> 

我的事件代码:

private void Mint_Checked_1(object sender, RoutedEventArgs e) 
    { 
     Mint.Foreground = Brushes.Red; 
     Changet.Foreground = Brushes.Black; 
    } 

    private void Changet_Checked_1(object sender, RoutedEventArgs e) 
    { 
     Mint.Foreground = Brushes.Black; 
     Changet.Foreground = Brushes.Red; 
    } 
+2

请发布您选中的活动的代码。 – 2012-07-25 17:47:50

回答

2

您获得的例外,因为您呼叫的检查事件的元素被初始化之前,解决的一种方式,这是将IsChecked=True移动到Loaded事件:

private void MyWindow_Loaded (object sender, RoutedEventArgs e) 
{ 
    Mint.IsChecked = true; 
} 
1

此工作适用于我,我感动了单选按钮的XAML行是序列中被检查到最后一行如下:

在XAML文件原始顺序,(这个顺序导致异常被抛出)

RadioButton x:Name="RadioButton1" 
RadioButton x:Name="RadioButton2" // Radio button that is initialized as selected (Is_Checked) 
RadioButton x:Name="RadioButton3" 
RadioButton x:Name="RadioButton4" 

也不例外:

RadioButton x:Name="RadioButton1" 
RadioButton x:Name="RadioButton3" 
RadioButton x:Name="RadioButton4" 
RadioButton x:Name="RadioButton2" // Radio button that is initialized as selected (checked) 

我相信这是因为当一个单选按钮变为“Is_checked”(甚至在初始化),它调用RadioButton_IsChecked方法来对其加以约束。

因此,在初始化RadioButton1初始化为false期间,RadioButton2被初始化为true,这称为绑定方法,而RadioButton3和RadioButton4仍未初始化,并且为null,从而导致异常。

请注意,上述内容不会更改窗体上单选按钮的位置。

另外,我已经绑定了所有4个单选按钮到相同的方法,并使用if/else if/else if/else来设置我想要检查按钮时的表单属性。