2016-07-10 9 views
-1

私はthis linkを読んで私の質問の答えを見つけました。私は知りたいです、我々はMVVMを使用する必要はありません方法があります。最初は、私の質問を聞かせてください! MainWindowというウィンドウにDataGridコントロールがあります。 MainWindowからNewWindowという別のウィンドウを開きます。 NewWindow私はいくつかのテキストボックスとボタンを持っています。 NewWindowでは、誰かが顧客に関する情報を入力することができ、これらの情報はデータベースに保存されるので、NewWindowのボタンの次のコードを使用します。MVVMを使用せずに別のウィンドウからWPFでdataGridを更新するには?

var Que = (from P in FaceDB.tblUsers where P.UserId == mytxtbox1.Text.ToString() select P).SingleOrDefault(); 

       Que.Pass = mytxtbox2.Text.ToString(); 
       FaceDB.SaveChanges(); 

これらの情報を保存した後、私はMainWindowのDataGridを更新したいと思います。私は、次のコードで試してくださいそれらのどれも動作しませんでした:

Que.Pass = mytxtbox2.Text.ToString(); 
FaceDB.SaveChanges(); 
MainPage MPWin = new MainPage(); 
MPWin.mydatagridt.UpdateLayout(); 

OR:

MPWin.mydatagrid.Items.Refresh(); 

OR:

CollectionViewSource.GetDefaultView(mydatagrid.ItemsSource).Refresh(); 

答えて

0

一つは直接DataGridのコードにデータを設定することができますItemsSourceを使用して、ここにあなたの例の変更があります:

Que.Pass = mytxtbox2.Text.ToString(); 
FaceDB.SaveChanges(); 

MainPage MPWin = new MainPage(); 

MPWin.mydatagridt.ItemsSource = Que.ToList(); 
+0

ありがとう、私はこのエラーがあります: ''FaceApp.FaceDBEntities.tblUser'を暗黙的に 'System.Collections.IEnumerable''に変換できません。とにかく私は次のコードを試してみますが、それでも動作しません:' var q = from b FaceDB.tblUsersで 選択b; MPWin.mydatagrid.ItemsSource = null; MPWin.mydatagrid.ItemsSource = q.ToList(); MPWin.mydatrid.Items.Refresh(); ' – Saeid

+0

@Saeidは、使用するハードリストを提供する必要があります。どちらを使用するかは、前述のようにToList()です。デバッガのデータをチェックします。正しく存在し、データグリッドが自動的に列を生成しますか? XAMLを提供する必要があります。 – OmegaMan

関連する問題