Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Wpf DataGrid中的所需位置插入Datarow_C#_Wpf - Fatal编程技术网

C# 在Wpf DataGrid中的所需位置插入Datarow

C# 在Wpf DataGrid中的所需位置插入Datarow,c#,wpf,C#,Wpf,如何在Wpf DataGrid中的所需位置插入行 我试过: GridCollection.Insert(2, (new ColumnCollection())) 以便将其插入第三个索引。其中,GridCollection是DataGrid的ItemSource。但它在最后一个网格上添加行 在WPF中,我们通常使用数据而不是UI元素。因此,要在数据中执行此操作,我们只需要执行以下操作: DataBoundCollection.Insert(2, newItem); 如果您已正确实现视图中的模型

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

我试过:

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

以便将其插入第三个索引。其中,GridCollection是
DataGrid
ItemSource
。但它在最后一个网格上添加行

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

DataBoundCollection.Insert(2, newItem);
如果您已正确实现视图中的模型或代码隐藏(或在
UserControl
窗口中使用
dependencProperty
)并将项目集合绑定到
DataGrid.ItemsSource
,则,然后,上述代码将导致一个新项目被添加到顶部第三个位置的
数据网格中:

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


更新>>>

我不知道你在做什么,但我猜你把情况复杂化了。忽略您当前的代码并将其放入新项目中,然后您将看到它可以完美地工作:

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);
}
私有ObservableCollection编号=新ObservableCollection();
公共可观测收集编号
{
获取{返回数字;}
设置{numbers=value;NotifyPropertyChanged(“numbers”);}
}
...
私有void DataGrid_MouseDoubleClick(对象发送器,MouseButtonEventArgs e)
{
数字。插入(2,10);
}
在构造函数中:

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

现在,当您双击数据网格时,您将看到新行添加到位置3,而不是开始或结束处。

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

DataBoundCollection.Insert(2, newItem);
如果您已正确实现视图中的模型或代码隐藏(或在
UserControl
窗口中使用
dependencProperty
)并将项目集合绑定到
DataGrid.ItemsSource
,则,然后,上述代码将导致一个新项目被添加到顶部第三个位置的
数据网格中:

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


更新>>>

我不知道你在做什么,但我猜你把情况复杂化了。忽略您当前的代码并将其放入新项目中,然后您将看到它可以完美地工作:

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);
}
私有ObservableCollection编号=新ObservableCollection();
公共可观测收集编号
{
获取{返回数字;}
设置{numbers=value;NotifyPropertyChanged(“numbers”);}
}
...
私有void DataGrid_MouseDoubleClick(对象发送器,MouseButtonEventArgs e)
{
数字。插入(2,10);
}
在构造函数中:

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

现在,当您双击
DataGrid
时,您将看到在位置3添加新行,而不是在开始或结束处。

您好Sheridan,您的意思是说对于GridCollection/DataBoundCollection属性,我必须使用从INotifyPropertyChanged继承的OnPropertyChange(“GridCollection/DataBoundCollection”)方法?如果它是如此静止,它会在网格底部添加行,谢谢SushmitNo,这不是我要说的。我是说,如果使用数据对象而不是UI对象,那么可以将数据项添加到数据集合中,该数据集合是绑定到UI集合控件的数据,UI控件将显示change.GridCollection Observable GridCollection{get;set;}DataCollection类,该类具有一些数据属性。。。。。因此,在向特定索引中添加行时,我正在执行GridCollection.Insert(2,new DataCollection(){prop1,prop2,prop3})Allready有8行。所以不是添加第三个位置,而是添加最后一个位置。所以不是添加第三个位置,而是添加最后一个位置。非常感谢上面的代码运行良好。即使我们通过了一些课程而不是int,它也能正常工作。但在我的例子中,我在类中传递不同类型的列集合。e、 g复选框、datetimecontrol、textbox等,以便在每列中使用不同的绑定。嗨,Sheridan,你是说对于GridCollection/DataBoundCollection属性,我必须使用从INotifyPropertyChanged继承的OnPropertyChange(“GridCollection/DataBoundCollection”)方法?如果它是如此静止,它会在网格底部添加行,谢谢SushmitNo,这不是我要说的。我是说,如果使用数据对象而不是UI对象,那么可以将数据项添加到数据集合中,该数据集合是绑定到UI集合控件的数据,UI控件将显示change.GridCollection Observable GridCollection{get;set;}DataCollection类,该类具有一些数据属性。。。。。因此,在向特定索引中添加行时,我正在执行GridCollection.Insert(2,new DataCollection(){prop1,prop2,prop3})Allready有8行。所以不是添加第三个位置,而是添加最后一个位置。所以不是添加第三个位置,而是添加最后一个位置。非常感谢上面的代码运行良好。即使我们通过了一些课程而不是int,它也能正常工作。但在我的例子中,我在类中传递不同类型的列集合。e、 g复选框、datetimecontrol、textbox等,以便在每个列中使用不同的绑定。