私の質問は次のとおりです。クエリ完了イベントはありますか???
データベースからいくつかのデータを照会して WPF アプリケーションに表示するために、エンティティ フレームワークを使用しています。私の問題は、エンティティ フレームワークがデータベース サーバーから結果を受け取る前にレンダリングが終了するため、UI のデータ リストが空のままになることです。対照的に、デバッグ モードに入り、データの一覧表示に移る前に少し待つと、クエリが終了し、データが一覧表示されます。
この問題にどのようにアプローチすればよいですか??
編集: ここに私のコードがあります:
public class DatabaseModel : DbContext, INotifyPropertyChanged
{
public ObservableCollection<Employee> observableCollection;
public event PropertyChangedEventHandler PropertyChanged;
public DbSet<Employee> Employees { get; set; }
public ObservableCollection<Employee> ObservableEmployees
{
get
{
return observableCollection;
}
set
{
observableCollection = value;
OnPropertyChanged("ObservableEmployees");
}
}
public DatabaseModel()
{
ObservableEmployees = Employees.Local;
}
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
そして、WPF を介して My DataBinding を使用する方法: App.Xaml で、このクラスのインスタンスを定義します...
<Application.Resources>
<local_database:DatabaseModel x:Key="DatabaseInstance"/>
</Application.Resources>
Mainwindow.XAML のデータを使用する
<ListBox ItemsSource="{Binding Source={StaticResource DatabaseInstance}, Path=ObservableEmployees, NotifyOnSourceUpdated=True}"
DisplayMemberPath="Name"
Binding.SourceUpdated="ListBox_SourceUpdated">
</ListBox>