通过使用MVVM模式单击按钮无法在Datagrid中查看我的文本框数据?

时间:2014-05-12 10:01:21

标签: c# wpf xaml mvvm datagrid

enter image description here

大家好,我上周以来遇到了一个问题,我无法解决原因,问题是我希望我的文本框数据显示在数据网格中,我使用的是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#View模型是:

 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);
        }

VLAN方法中的代码无法正常工作我不知道为什么因为我能够看到我在Console中写的行Add vlan但后来代码无法正常工作我不知道原因请帮忙吗?

1 个答案:

答案 0 :(得分:0)

解决: 问题出在我的XAML中的ItemSsource中。我将ItemsSource="{Binding Source=vlan}"更改为ItemsSource="{Binding vlan}" 它开始显示我的Datagrid中的所有数据。

:)