2012-09-03 30 views
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

爲什麼在啓動後拋出NullReferenceException?

因爲當CheckBox觸發事件時並非所有控件都已加載。


我建議bindingCheckBox到布爾和結合其他控件IsEnabled到(或結合directlyCheckBox)。

5

我會建議使用像綁定(XAML中移除事件處理程序)

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

爲要啓用/使用複選框來禁用所有的控制。

+1

是的這應該工作。數據綁定時不需要處理事件。 – Geethanga

相關問題