我有两个单选按钮,如果我将属性IsChecked
放在XAML中,程序会因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;
}
答案 0 :(得分:2)
您正在获取该异常,因为您在元素初始化之前调用了checked事件,解决此问题的一种方法是将IsChecked=True
移动到Loaded事件:
private void MyWindow_Loaded (object sender, RoutedEventArgs e)
{
Mint.IsChecked = true;
}
答案 1 :(得分:1)
这对我有用,我将要检查的RadioButton的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)
我相信这是因为当一个单选按钮变为&#34; Is_checked&#34; (即使在初始化时)它也会调用它绑定的RadioButton_IsChecked方法。
因此,在初始化RadioButton1初始化为false时,RadioButton2初始化为true,调用绑定方法,而RadioButton3和RadioButton4仍未初始化,并且为null,导致异常。
请注意,上述内容不会更改表单上单选按钮的位置。
另外,我已经将所有4个单选按钮绑定到同一个方法,并使用if / else if / else if / else在选中按钮时设置我想要的表单属性。