2013-02-19 40 views
0

我想開發一些工具,因爲我是WPF的新手。我有一個組合框有2個項目。嘗試隱藏WPF應用程序中的文本塊時得到空例外

的XAML代碼如下

<Window x:Class="New_generator2.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="500" Width="500"> 
    <Grid> 

     <ComboBox Height="21" Margin="36,15,22,0" Name="comboBox1" VerticalAlignment="Top" AllowDrop="True" Text="" SelectionChanged="comboBox1_SelectionChanged"> 
      <ComboBoxItem Tag="1" IsSelected="True" Name="ComboBox_Rule_Parameter">Rule_Parameter</ComboBoxItem> 
      <ComboBoxItem Tag="2" Name="ComboBox_Rule_Instance">Rule_Instance</ComboBoxItem> 
     </ComboBox> 

     <TextBox Height="25" HorizontalAlignment="Right" Margin="0,71,14,0" Name="Field_Code_textbox" VerticalAlignment="Top" Width="220" Visibility="Hidden" /> 
     <TextBlock Height="25" HorizontalAlignment="Left" Margin="14,73,0,0" Name="Field_Code" VerticalAlignment="Top" Width="220" TextBlock.FontSize="20" Background="BurlyWood" TextAlignment="Center" Text="Data_Field_Code" Visibility="Hidden"/> 
     <TextBox Height="84" Margin="35,0,23,12" Name="Script" VerticalAlignment="Bottom" Width="420" Visibility="Hidden"/> 
     <Button Height="25" Margin="120,0,123,106" Name="Generate" VerticalAlignment="Bottom" TextBlock.FontSize="18" Background="BlanchedAlmond" TextBlock.TextAlignment="Justify" Click="button1_Click" Visibility="Hidden">Dispaly</Button> 

    </Grid> 
</Window> 

和C#代碼如下

public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      Field_Code = new TextBlock(); 
     } 

     private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      if (comboBox1.SelectedIndex == 0) 
      { 
       Field_Code.Visibility = Visibility.Visible; 
      } 
      if (comboBox1.SelectedIndex == 1) 
      { 
       Field_Code.Visibility = Visibility.Hidden; 
      } 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      Script.Text = Field_Code_textbox.Text; 
     } 
    } 

當我運行它,我得到一個空的異常,即未將對象引用設置的一個實例一個東西。我附上了空例外的截圖。

enter image description here

請幫我解決這個問題。

+0

嘗試刪除「Field_Code = new TextBlock()」應調用InitializeComponent時創建Field_code。 – mosca125 2013-02-19 12:51:54

回答

1

在構造函數中將Field_Code的初始化移動到BEFORE InitialiseComponent()。

+0

感謝馬修,它工作。 – Preeth 2013-03-07 07:41:54

0

看起來組合選擇改變是從InitializeComponent觸發的。

1

發生這種情況是因爲從InitializeComponent()調用了combobox_selection變化,並且此時您的Field_Code未初始化。最簡單的解決方法是在Window1()構造函數中的InitializeComponent();之前移動Field_Code = new TextBlock();

+0

謝謝大衛,它工作。 – Preeth 2013-03-07 07:41:27

0

就我個人而言,我會製作一個屬性,如public bool FieldCodeVisible { .. },並將文本框的可見性綁定到該屬性。

與其說Field_Code.Visibility = Visibility.Visible;你可以說FieldCodeVisible = true;

這樣,你有你的邏輯視圖模型您的,但你可以決定對功能在您看來