0

2つのラジオボタンがあり、属性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;
    }
4

2 に答える 2

3

要素が初期化される前にcheckedイベントを呼び出しているため、この例外が発生します。これを解決する1つの方法は、IsChecked=TrueをLoadedイベントに移動することです。

private void MyWindow_Loaded (object sender, RoutedEventArgs e)
{
  Mint.IsChecked = true;
}
于 2012-07-25T18:19:07.363 に答える
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)

これは、ラジオボタンが「Is_checked」に変更されると(初期化時であっても)、バインドされているRadioButton_IsCheckedメソッドを呼び出すためだと思います。

したがって、初期化中にRadioButton1がfalseに初期化され、次にRadioButton2がtrueに初期化され、バインドされたメソッドが呼び出されました。RadioButton3とRadioButton4はまだ初期化されておらず、nullであったため、例外が発生しました。

上記はフォーム上のラジオボタンの位置を変更しないことに注意してください。

また、4つのラジオボタンすべてを同じメソッドにバインドし、if / else if / else if / elseを使用して、ボタンがチェックされたときに必要なフォームプロパティを設定しました。

于 2014-11-17T23:05:03.833 に答える