항목이 업데이트될 때 데이터 그리드가 업데이트되지 않는 이유소스가 변경되었습니까?
제 wpf 애플리케이션에 데이터 그리드가 있는데 간단한 문제가 있습니다.일반 목록이 있으며 개체가 컬렉션에 추가될 때마다 이 컬렉션을 데이터 그리드 데이터 원본에 바인딩하려고 합니다.그리고 저는 관찰 가능한 수집품을 사용하는 것에 관심이 없습니다.
요점은 저는 다른 곳에서 같은 방법을 사용하고 있고 그것은 잘 작동한다는 것입니다. 하지만 이번에 추가 버튼을 누르면 개체가 추가되고 데이터 그리드가 올바르게 업데이트되지만 수집 데이터 그리드에 추가된 두 번째 항목에서는 더 이상 업데이트되지 않습니다.
코드는 다음과 같습니다.
private void btnAddItem_Click(object sender, RoutedEventArgs e)
{
OrderDetailObjects.Add(new OrderDetailObject
{
Price = currentitem.Price.Value,
Quantity = int.Parse(txtQuantity.Text),
Title = currentitem.DisplayName,
TotalPrice = currentitem.Price.Value * int.Parse(txtQuantity.Text)
});
dgOrderDetail.ItemsSource = OrderDetailObjects;
dgOrderDetail.UpdateLayout();
}
감 잡히는 게 없어요?
그ItemsSource
항상 동일하며, 컬렉션에 대한 참조, 변경 또는 업데이트가 없습니다.다음 전에 이를 무효화할 수 있습니다.
dgOrderDetail.ItemsSource = null;
dgOrderDetail.ItemsSource = OrderDetailObjects;
또는 항목을 새로 고칠 수도 있습니다.
dgOrderDetail.ItemsSource = OrderDetailObjects; //Preferably do this somewhere else, not in the add method.
dgOrderDetail.Items.Refresh();
당신이 실제로 전화하고 싶어하는 것 같지는 않습니다.UpdateLayout
저기...
(관찰 가능한 컬렉션 사용을 거부하는 것은 좋은 생각이 아닙니다.)
나는 또한 단지 하는 것이
dgOrderDetails.Items.Refresh();
또한 동일한 동작을 수행할 수 있습니다.
예를 들어 람다를 사용하여 ItemSource를 필터링된 목록에 바인딩하면 업데이트되지 않습니다.I CollectionView를 사용하여 이 문제를 해결합니다(Comment not work):
//WindowMain.tvTemplateSolutions.ItemsSource = this.Context.Solutions.Local.Where(obj=>obj.IsTemplate); // templates
ICollectionView viewTemplateSolution = CollectionViewSource.GetDefaultView(this.Context.Solutions.Local);
viewTemplateSolution.SortDescriptions.Clear();
viewTemplateSolution.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
viewTemplateSolution.Filter = obj =>
{
Solution solution = (Solution) obj;
return solution.IsTemplate;
};
WindowMain.tvTemplateSolutions.ItemsSource = viewTemplateSolution;
관찰 가능한 컬렉션을 항목 컬렉션으로 사용하고 뷰 모델에서 콜 컬렉션 뷰보다 사용합니다.Source.GetDefaultView(my_collection)입니다.새로 고침();
언급URL : https://stackoverflow.com/questions/7059070/why-does-the-datagrid-not-update-when-the-itemssource-is-changed
'IT' 카테고리의 다른 글
deque 컨테이너와 list STL 컨테이너의 차이점은 무엇입니까? (0) | 2023.04.28 |
---|---|
Excel용 EPLus 라이브러리로 다중 스타일 셀을 만들려면 어떻게 해야 합니까? (0) | 2023.04.28 |
필터링된 목록을 VBA로 루프하는 가장 쉬운 방법은 무엇입니까? (0) | 2023.04.28 |
Git에서 파일을 분리하는 방법은 왜 두 가지입니까? (0) | 2023.04.23 |
Git: 분기를 체크아웃할 수 없음 - 오류: pathspec '...'이(가) git에 알려진 파일과 일치하지 않습니다. (0) | 2023.04.23 |