2011-07-11 40 views
1

我坐在一個問題,並希望你能幫助我。我在WPF MVVM中實現。我會盡我所能解釋。 所以我有一個看法。其中我有一個大的財產考試。在這種觀點下,我必須能夠改變財產考試的設置。這很好。但是,我想要一個按鈕,並出現一個對話框。在那裏,我可以更改一些特定的(其他)設置或考試屬性。我不想在一個窗口中完成這一切,所以我使用對話框工作。我做這在我的視圖模型:使用viewmodel,如何更改其他窗口中的屬性?

private void AlgemeneGegevensClick(object sender, RoutedEventArgs e) 
     { 
      ToetsBeheerViewModel vm = (ToetsBeheerViewModel)this.DataContext; 
      EditAlgemeneGegevens window = new EditAlgemeneGegevens(vm); 
      window.Show(); 

     } 

所以一些文本框在那裏我可以在測試的一些規範填寫一個窗口自敗。但現在我的問題是,我如何將(檢查對象的)這種變化返回給視圖模型?因爲我在我分開的窗口中這樣做:

public partial class EditAlgemeneGegevens : Window 
    { 
     private ToetsBeheerViewModel toetsb; 
     public EditAlgemeneGegevens(ToetsBeheerViewModel vm) 
     { 
      InitializeComponent(); 
      toetsb = vm; 

     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      toetsb.Examination.Course = "blablabla"; 
     } 


    } 

所以我想改變blablabla的考試課程屬性。但是我的viewmodel不會知道這個屬性改變了嗎? 希望你得到它..並可以幫助我:)?

謝謝..

回答

1

它看起來像你的視圖模型傳遞到新的窗口......所以不應該在新窗口中進行任何更改該實例中反映出來?

如果您需要更加鬆散耦合的方式來返回結果,您可以考慮爲您的應用程序提供消息總線基礎結構。有幾種實現方式,但這裏有一個很好的文章:

http://blog.tonysneed.com/2011/03/03/climb-onboard-on-the-mvvm-message-bus/

0

IMO,您的對話框窗口應該有它自己的視圖模型和比你可以從該視圖模型將消息發送到原來的視圖模型所描述的here

相關問題