1

MainWindow.xaml

<CheckBox Content="Enable" Height="16" HorizontalAlignment="Left" Margin="190,40,0,0" Name="checkBox_Enable" VerticalAlignment="Top" IsChecked="True" Unchecked="checkBox_Enable_Unchecked" Checked="checkBox_Enable_Checked" />
    <Label Content="Fullscreen:" Height="15" HorizontalAlignment="Left" Margin="227,63,0,0" Name="label3" VerticalAlignment="Top" Width="56" Padding="1" />
    <TextBox HorizontalAlignment="Right" Margin="0,86,243,0" Name="textBox_Hotkey_Fullscreen" Width="33" Height="18" VerticalAlignment="Top" />
    <Label Content="Custom field:" HorizontalAlignment="Left" Margin="227,110,0,136" Name="label5" Padding="1" />
    <TextBox Height="18" HorizontalAlignment="Left" Margin="227,131,0,0" Name="textBox_Hotkey_Customfield" VerticalAlignment="Top" Width="33" />
    <Label Content="Window-related:" HorizontalAlignment="Left" Margin="227,155,0,87" Name="label4" Padding="1" />
    <TextBox HorizontalAlignment="Left" Margin="227,0,0,112" Name="textBox_Hotkey_Windowrelated" Width="33" Height="18" VerticalAlignment="Bottom"  />

MainWindow.xaml.cs

    private void checkBox_Enable_Unchecked(object sender, RoutedEventArgs e)
    {
        textBox_Hotkey_Fullscreen.IsEnabled = false;
        textBox_Hotkey_Customfield.IsEnabled = false;
        textBox_Hotkey_Windowrelated.IsEnabled = false;
    }

    //There are no problems after purging this function. However, the controls couldn't be "re-enabled", what obviously makes my concept pointless.  
    private void checkBox_Enable_Checked(object sender, RoutedEventArgs e)
    {

        textBox_Hotkey_Fullscreen.IsEnabled = true; 
        textBox_Hotkey_Customfield.IsEnabled = true;
        textBox_Hotkey_Windowrelated.IsEnabled = true;
    }

起動直後にNullReferenceExceptionがスローされるのはなぜですか?

4

2 に答える 2

5

Binding のように使用することをお勧めします (xaml からイベント ハンドラーを削除します)。

 IsEnabled="{Binding ElementName=checkBox_Enable, Path=IsChecked}" 

チェックボックスで有効/無効にするすべてのコントロールに対して。

于 2012-09-03T14:41:05.720 に答える
4

起動直後に NullReferenceException がスローされるのはなぜですか?

CheckBoxがイベントを発生させたときに、まだすべてのコントロールがロードされているわけではないためです。


をbool にバインドし、他のコントロールをそれにバインドする (またはに直接バインドする)ことをお勧めします。CheckBoxIsEnabledCheckBox

于 2012-09-03T14:35:42.043 に答える