diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridDataConnection.cs b/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridDataConnection.cs index 1b5661bd0d0..a0ed619fbbe 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridDataConnection.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridDataConnection.cs @@ -954,7 +954,7 @@ private void NotifyingDataSource_VectorChanged(IObservableVector sender, { // If we're grouping then we handle this through the CollectionViewGroup notifications. // Remove is a single item operation. - _owner.RemoveRowAt(index, sender[index]); + _owner.RemoveRowAt(index); } break; diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridRows.cs b/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridRows.cs index 7146e112b26..d94d31d2c3b 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridRows.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid/DataGridRows.cs @@ -605,6 +605,12 @@ internal void RefreshRows(bool recycleRows, bool clearRows) } } + internal void RemoveRowAt(int rowIndex) + { + object item = GetRow(rowIndex)?.DataContext; + RemoveElementAt(SlotFromRowIndex(rowIndex), item, true); + } + internal void RemoveRowAt(int rowIndex, object item) { RemoveElementAt(SlotFromRowIndex(rowIndex), item, true); @@ -1375,6 +1381,18 @@ private void EnsureRowDetailsVisibility( raiseNotification); } + private DataGridRow GetRow(int index) + { + if (_rowsPresenter != null) + { + return _rowsPresenter.Children[index] as DataGridRow; + } + else + { + return null; + } + } + private IEnumerable GetAllRows() { if (_rowsPresenter != null) diff --git a/UnitTests/UnitTests.UWP/UI/Test_AdvancedCollectionView.cs b/UnitTests/UnitTests.UWP/UI/Test_AdvancedCollectionView.cs index 9a5f59fe457..a323d9536d7 100644 --- a/UnitTests/UnitTests.UWP/UI/Test_AdvancedCollectionView.cs +++ b/UnitTests/UnitTests.UWP/UI/Test_AdvancedCollectionView.cs @@ -8,6 +8,7 @@ using System.Collections.ObjectModel; using System.Linq; using Microsoft.Toolkit.Uwp.UI; +using Microsoft.Toolkit.Uwp.UI.Controls; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting.AppContainer; @@ -1053,6 +1054,27 @@ public void Test_AdvancedCollectionView_Sorting_CustomComparable_With_Shaping() Assert.AreEqual(42, ((Person)a.First()).Age); } + [TestCategory("AdvancedCollectionView")] + [UITestMethod] + public void Test_AdvancedCollectionView_Using_with_DataGrid() + { + var l = new ObservableCollection + { + "lorem", + "ipsum", + "dolor", + "sit", + "amet" + }; + + var a = new AdvancedCollectionView { Source = l }; + new DataGrid { ItemsSource = a }; + Assert.AreEqual(5, a.Count); + + l.RemoveAt(l.Count - 1); + Assert.AreEqual(4, a.Count); + } + private class DelegateComparable : IComparer { private Func _func; diff --git a/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj b/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj index cdbb101c62a..95a345c6937 100644 --- a/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj +++ b/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj @@ -306,6 +306,10 @@ {d4ff799d-0df2-495a-adc9-3bbc4aef8971} Microsoft.Toolkit.Uwp.UI.Behaviors + + {DAEB9CEC-C817-33B2-74B2-BC379380DB72} + Microsoft.Toolkit.Uwp.UI.Controls.DataGrid + {cb444381-18ba-4a51-bb32-3a498bcc1e99} Microsoft.Toolkit.Uwp.UI.Controls.Layout