【问题标题】:Fill datagrid rows from textbox values?从文本框值填充数据网格行?
【发布时间】:2014-04-25 12:05:40
【问题描述】:

我有以下 wpf,当用户在文本框中输入值并按 Add Vlan 按钮时,我需要从文本框值填充我的数据网格行。我使用的是 MVVM 模式,所以我在它后面创建了一个 ICommand 接口:

我的 C# 代码是:

#region ICommand

    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

AddVlans() 方法将有实际的事件执行者,但我不知道如何执行事件以在数据网格中显示数据。

Xaml 代码是:

 <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"> 

      <DataGrid.Columns>
      <DataGridTextColumn Header="VLAN Name"     />
      <DataGridTextColumn Header="VLAN ID"       />
      <DataGridTextColumn Header="IP" Width="100"/>
      <DataGridTextColumn Header="VLAN Ports" Width="100"/>
      </DataGrid.Columns>
    </DataGrid>
  </Grid>

谁能解释一下怎么做??

【问题讨论】:

  • 如果你分享一点你的源代码/文件结构会更容易。
  • 添加更多信息,就像艾森霍恩说的:添加你的源代码。

标签: c# wpf mvvm datagrid icommand


【解决方案1】:

正确实现INotifyPropertyChanged,为每个TextBox/Field/ComboBox创建属性并绑定它们TwoWay。确保在您的 GUI 中所做的更改成功地反映到您的 ViewModel。话虽如此,您可以控制应用程序用户输入的数据。

您需要在绑定到 DataGrid 的 ItemsSource 的 ViewModel 中放置一个 ObservableCollection,以便通知视图有关更改。在您的AddVlans() 函数中,只需使用关联属性向此ObservableCollection 添加一个新条目即可。如果您正确实现了INotifyPropertyChanged,视图应该会收到有关您添加的条目的通知,因此该条目将显示在您的 DataGrid 中。

如果您还不知道我在说什么,请考虑先阅读 WPF 中的 Binding,然后再继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多