如何在Wpf DataGrid中的所需位置插入一行?
我试过了:
GridCollection.Insert(2, (new ColumnCollection()))
为了将其插入第3个索引。 GridCollection是ItemSource
的{{1}}。但它在最后一个网格上添加了一行。
答案 0 :(得分:1)
在WPF中,我们通常使用数据而不是 UI元素。因此,要在数据中执行此操作,我们只需要执行此操作:
DataBoundCollection.Insert(2, newItem);
如果您在视图模型或代码中正确实现了INotifyPropertyChanged
Interface(或在后面的DependencyProperty
或UserControl
代码中使用了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位添加新行,而不是在开头或结尾添加。