2014-05-12 12 views
-2

enter image description here無法通過單擊使用MVVM模式的按鈕在Datagrid中看到我的文本框數據?

嗨,大家好,我有自上週以來,一個問題,我無法理清的原因,問題是我希望我的文本框的數據是在一個DataGrid中顯示,我使用WPF C#和模式是MVVM 。

我的XAML代碼:

<TextBox 
      Grid.Row="0" 
      Grid.Column="1" 
      Margin="0,5,0,0" 
      Height="25" 
      Foreground="Black" 
      Opacity="0.8" 
      Width="Auto" 
      Text="{Binding VlanName, UpdateSourceTrigger=PropertyChanged}" 
      /> 



     <TextBox 
      Grid.Row="1" 
      Grid.Column="1" 
      Margin="0,5,0,0" 
      Height="25" 
      Foreground="Black" 
      Opacity="0.8" 
      Width="70" 
      HorizontalAlignment="Left" 
      Text="{Binding VlanID, UpdateSourceTrigger=PropertyChanged}" 
      /> 

<Button Grid.Column="3" 
      Grid.Row="1" 
      Content="Add VLAN" 
      Margin="10,5,0,0" 
      Style="{StaticResource AppButtons}" 
      Command="{Binding AddVlan}" 

      />  

    <Button Grid.Column="3" 
      Grid.Row="2" 
      Content="Remove VLAN" 
      Margin="10,5,0,0" 
      Style="{StaticResource AppButtons}" 
      Width="100" 
      Command="{Binding RemoveVlan}" 
      /> 
<DataGrid Grid.Row="4" 
       Grid.ColumnSpan="3" 
       Height="200" 
       Margin="10,10,0,0" 
       Name="dg" 
       ItemsSource="{Binding Source=vlan}" 
       AutoGenerateColumns="False" 

       > 

     <DataGrid.Columns> 
     <DataGridTextColumn Header="S.No" Binding="{Binding Path=S_No}"/> 
     <DataGridTextColumn Header="VLAN Name" Binding="{Binding Path=vname}" /> 
     <DataGridTextColumn Header="VLAN ID"  Binding="{Binding Path=vid}" /> 
     <DataGridTextColumn Header="   IP" Width="100"/> 
     <DataGridTextColumn Header="VLAN Ports" Width="100"/> 
     </DataGrid.Columns> 
    </DataGrid> 

C#視圖模型是:在VLAN方法

vlan = new ObservableCollection<VLANSPropertyClass>(); 



    public string VlanName 
     { 
      get 
      { 
      return this.ConfigurationLibrary.ConfigLibraryVlanName; 
      } 
      set 
      { 
      if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value)) 
      { 
       return; 
      } 
      this.ConfigurationLibrary.ConfigLibraryVlanName = value; 
      this.OnPropertyChanged("VlanName"); 
      } 
     } 
    public string VlanID 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanName; 
     } 
     set 
     { 
     if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value)) 
     { 
      return; 
     } 
     this.ConfigurationLibrary.ConfigLibraryVlanName = value; 
     this.OnPropertyChanged("VlanID"); 
     } 
    } 
    public ICommand AddVlan 
     { 
      get 
      { 
      if (_addVlan == null) 
       _addVlan = new RelayCommand(() => this.AddVlans()); 

      return _addVlan; 
      } 

     } 

     public ICommand RemoveVlan 
     { 
      get 
      { 
      if (_removeVlan == null) 
       _removeVlan = new RelayCommand(() => this.RemoveVlans()); 

      return _removeVlan; 
      } 

     } 
     #endregion //ICommand region end 

     void AddVlans() 
     { 
      Console.WriteLine("Add vlan"); 
      var serial = new VLANSPropertyClass(); 
      serial.S_No = vlan.Count + 1; 
      serial.vname = VlanName; 
      serial.vid = VlanID; 
      vlan.Add(serial); 
     } 

代碼不工作我不知道爲什麼,因爲我能看到線Add vlan我在控制檯中寫的,但後來的代碼不工作,我不知道請幫助的原因?

+0

集合'vlan'是否有公共getter? –

+0

是... public ObservableCollection vlan {get;組; } 我忘了粘貼上面的代碼。 – TheSpy

+0

我認爲AddVlans()方法可能存在問題! – TheSpy

回答

0

已解決: 問題出在我的ItemSource中的XAML中。我將ItemsSource="{Binding Source=vlan}"更改爲ItemsSource="{Binding vlan}" ,並開始顯示我Datagrid中的所有數據。

:)

相關問題