2012-11-10 2 views
0

지금 LINQ to Entity 쿼리에서 얻은 목록을 표시하는 WPF DataGrid이 있습니다. 그렇다고해서 데이터베이스에서 무언가를 지우면 즉시 DataGrid에서 삭제된다는 의미는 아닙니다. myGrid.Items.Refresh()을 시도했지만 단 하나의 셀만 새로 고칩니다.WPF DataGrid에 최신 내용을 표시하는 방법은 무엇입니까?

나는 ObservableCollection이 문제를 어떻게 든 해결할 수 있음을 알고 있지만 데이터베이스를 만들거나 추가하거나 수정할 때마다 컬렉션이 수정 될 때마다 그러한 컬렉션과 적절한 방법을 어디서 만들지는 모른다.

답변

1

DataGrid에는 쿼리가 실행 된 당시의 데이터가 있습니다.
신선한 데이터가 필요한 경우 쿼리를 다시 실행해야합니다. 사용하지 않는 경우

Query Notifications in SQL Server

는 MSSQL 나를 알고 내가 대답을 삭제 할 수 있습니다.

0

코드를 통해 DataGrid와 상호 작용할 필요는 없습니다. 대신 DataGrid의 ItemsSource를 ObservableCollection에 바인딩하고 컬렉션을 조작하십시오. DataGrid가 자동으로 업데이트됩니다.

은 여기를보세요 : Bind ObservableCollection to a DataGrid after assigning new value

사실, 당신은 (내 경우는 시간의 95 %이다), 당신이 당신의 WPF에 어떤 이름을 부여하지 않으려는 많은 경우에 그 실현합니다 제어. 코드가 UI에 대해 알지 못한다면 장기적으로 유지하는 것이 더 쉽습니다. 데이터 바인딩을 통해 정보를 가져올 위치를 UI에 알려주십시오. INotifyPropertyChanged 또는 Dependency Properties 및 DataContext를 살펴보십시오.

<DataGrid ItemsSource="{Binding MyCollection}" /> 


public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
    } 

    ObservableCollection<object> myCollection = new ObservableCollection<object>(); 
    public ObservableCollection<object> MyCollection 
    { 
    get 
    { 
     return myCollection; 
    } 
    set 
    { 
     myCollection = value; 
     // Call the Notification here. Using linq and reflection you could get it to look like this: 
     // NotifyPropertyChanged(() => MyCollection); 
    } 
} 

myCollection 값을 실제로 변경하지 않으면 변경 알림을 제공 할 필요가 없습니다. ObservableCollection은 컬렉션을 수정할 때 실제로 자체적으로 변경 사항을 제공합니다.

관련 문제