を削除した後更新されない、のDataTableにバインド:XAMLでListViewコントロールだから基本を行
mainGrid.SetBinding(Grid.DataContextProperty,
new Binding() {
Source = new DataView()
{ Table = SQLHandler.GetHandler[classType.ToString()] }
}
);
:
私はグリッドのDataContextのが移入され、その上にListViewコントロールを持つウィンドウを、持っています<ListView Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding}">
すべて正常に機能し、入力されます。上記のように、私はSingletonからアクセスできるSQLHandlerクラスを持っており、インデクサーでテーブルにアクセスできます。
問題は:ウィンドウが読み込まれ、私は行を選択しています、編集ボタンをクリックすると、新しいウィンドウがロードされ、選択された行の詳細が表示されます。この新しいウィンドウを介してこの行を削除して閉じると、メインウィンドウ(完全なデータテーブルが表示されます)はそれに応じて更新されません。私は解決策が何であるべきかを知っていますが、私はそれを機能させることはできません。 (InotifypoppertyはSqlHandlerクラス、Binding.IndexerNameなどにインターフェイスを変更しました)
ここが主なものです。私のSqlHandlerクラスにはデータセットがありません.SqlExecuterには、すべてのsqlコマンドが実行されています。
public DataSet GetDataSet
{
get { return ds; }
}
どのように私はこの作業を行うことができます。GetDataSetがある
public override DataTable this[string key]
{
get
{
if (sqlExecuter.GetDataSet.Tables.Contains(key))
return sqlExecuter.GetDataSet.Tables[key];
throw new KeyNotFoundException("The specified key was not found");
}
}
?別のウィンドウで行を削除してその行を閉じると、メインウィンドウのリストビューは更新されません。 私が持っている唯一のオプションは、リフレッシュボタンを押してから、datacontextプロパティを再バインドして、もちろん動作しますが、私の目標は結局バインディングのための 'ライブ'アップデートシステムを持つことです。
私が試したこと:SqlExecuterのGetDataSet:inotifypropertychangedインターフェイスを実装しましたが、何も変更されませんでした。私はsetterを持たないため、SqlHandlerのインデクサーでinotifypropertychangedを実装することはできません。私は常にコードビハインドからテーブルにアクセスしています。私のsqldataadapterはそれらを読み込んでいます(Fillメソッド)
ps私は実際にObservableCollectionを作成する予定はありません。コードの90%を書き直す必要があります。行を削除すると、データセットをクリアして再度入力するので、すべての変更に気づくことさえ期待できません私は私のデータテーブルを補充するとき、ちょうど、私のリストビューは...それについて知っていると