2016-05-20 2 views
1

おはよう、c#wpf - 編集ウィンドウから戻るときにグリッドを更新

編集ウィンドウの要素の1つを変更した後にグリッドをリフレッシュする最善の方法を知りたかったのです。

私は従業員が言うことができるグリッドを持っています。私はこの従業員を削除し、メイングリッドに戻ってきた場合は、その従業員がまだある

EmployeeEdit wEdit = new EmployeeEdit(ref selectedEmployee); 
wEdit.Show(); 

私は、グリッドがリフレッシュされていないので(私はやっていけない...編集ウィンドウへの参照として従業員を渡しますショーダイアログ)。

私は変数を参照として渡し、その変数を従業員の削除時に変更することを考えていました。次に、元のグリッドにフォーカスがあるときは、変数をチェックし、グリッドをリフレッシュする必要がある場合はリフレッシュします。

これはリグで修正されたようだが、これを行う最も効率的な方法を知りたかった。

あなたは

+0

従業員を最初にグリッドに追加する部分を表示します。実際には、それはあなたがそれをリフレッシュする方法を知っているように思われるので、無関係なようです。編集ウィンドウが閉じられたときを知る方法が問題です。そのウィンドウ内にイベントを提供し、変更が発生したときにそのイベントを発生させ、ハンドラー内のグリッドを表示して更新する前に呼び出し元ウィンドウでイベントをサブスクライブします。 – Sinatr

+0

グリッドのデータソースとしてObservableCollectionを使用し、削除するときにこのリストから雇用者を削除すると、すぐに利用できます – unkreativ

+0

'CollectionViewSource'を' IEnumerable 'コレクションとともに使用することもできます。これは、コレクションの型を変更する必要なく、ObservalbleCollectionとして機能します。 – XAMlMAX

答えて

0

あなたは(残念ながら私はあなたのコードから言うことができない)、それはクロージングイベントまたは終了イベントを有していてもよく、たとえば、wEditオブジェクト内のイベントをサブスクライブする必要がありますありがとうございました。

イベントに登録するには、次のように記述します。

EmployeeEdit wEdit = new EmployeeEdit(ref selectedEmployee); 
wEdit.Closing += (s, e) => 
{ 
     //place code to refresh your grid here 
} 
wEdit.Show(); 

イベントが発生すると、グリッドが更新されます。

+0

これを試してみよう! '+ =(s、e)=>'部分は何ですか? update:私は編集ウィンドウで 'this.Close();'を使っていますが、そのコードは決してその終了イベントには入りません。 – Walking

+0

これはメソッドを書くための一種の短い手です。sはwEditを表し、eはイベントの引数を表し、 "sender"を表します。ここを見てくださいhttp://stackoverflow.com/questions/2465040/using-lambda-expressions-for-event-handlers –

+0

すべてが完璧に動作します。 Markありがとう – Walking

関連する問題