在Wpf DataGrid中将Datarow插入所需位置

时间:2013-11-22 14:22:35

标签: c# wpf

如何在Wpf DataGrid中的所需位置插入一行?

我试过了:

GridCollection.Insert(2, (new ColumnCollection()))

为了将其插入第3个索引。 GridCollection是ItemSource的{​​{1}}。但它在最后一个网格上添加了一行。

1 个答案:

答案 0 :(得分:1)

在WPF中,我们通常使用数据而不是 UI元素。因此,要在数据中执行此操作,我们只需要执行此操作:

DataBoundCollection.Insert(2, newItem);

如果您在视图模型或代码中正确实现了INotifyPropertyChanged Interface(或在后面的DependencyPropertyUserControl代码中使用了Window)并且数据绑定了收集项目到DataGrid.ItemsSource,然后上面的代码将导致新项目被添加到位于第三位的DataGrid中:

<DataGrid ItemsSource="{Binding DataBoundCollection}" ... />

更新&gt;&gt;&gt;

我不知道你在做什么,但我猜你的情况太复杂了。忽略您当前的代码并将其放入一个新项目,然后您将看到它完美运行:

XAML:

<DataGrid ItemsSource="{Binding Numbers}" MouseDoubleClick="DataGrid_MouseDoubleClick">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding}" />
    </DataGrid.Columns>
</DataGrid>

背后的代码:

private ObservableCollection<int> numbers = new ObservableCollection<int>();
public ObservableCollection<int> Numbers
{
    get { return numbers; }
    set { numbers = value; NotifyPropertyChanged("Numbers"); }
}

...

private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    Numbers.Insert(2, 10);
}

在构造函数中:

Numbers = new ObservableCollection<int>() { 1, 2, 3, 4, 5 };

现在,当您双击DataGrid时,您会看到在第3位添加新行,而不是在开头或结尾添加。