2012-10-08 38 views
0

我目前有兩個窗口,我的主應用程序窗口,然後我有一個「編輯器」窗口,用於改變我最近實施的TreeView內的某些東西隱藏所有子部門/顯示的能力,但是我有一個問題,如果我隱藏/顯示所有這些只有原始選擇將隱藏/顯示,直到我使用我的刷新功能...所以我的問題是..是否有無論如何,我可以在我的編輯器上設置我的接受按鈕,因爲這是兩個獨立的文件我似乎無法訪問名爲「資源管理器」的TreeView刷新數據在一個單獨的窗口中使用按鈕

我的當前刷新如何完成:

 public void RefreshData() 
    { 
     explorer.Items.Clear(); 
     using (new SessionConnecter(session)) 
     { 
      var topLevelDepartments = session.CreateCriteria(typeof(Department)) 
       .Add(NHibernate.Expression.Expression.Eq(Department.IS_TOP_LEVEL, true)) 
       .List<Department>(); 

      foreach (Department d in topLevelDepartments) 
      { 
       explorer.Items.Add(Fabric.ObjectProvider.Get<INodeWrapperFactory>().Create(d)); 
      } 
     } 
    } 

活期儲蓄的代碼:

 void Save(object sender, ExecutedRoutedEventArgs e) 
    { 
     FocusManager.SetFocusedElement(GetWindow(savebutton), savebutton); 
     if (!session.IsConnected) 
      session.Reconnect(); 

     try 
     { 
      if (ValidateModel()) 
      { 
       session.Save(model); 
       if (pendingParent != null) 
       { 
        model.Parent = pendingParent; 
        // session.Save(pendingParent); - should cascade 
       } 

       session.Flush(); 
       Close(); 
      } 
     } 
     catch (NHibernate.Classic.ValidationFailure ex) 
     { 
      if (pendingParent != null) 
       session.Refresh(pendingParent); 

      if (session.IsConnected) 
       session.Disconnect(); 

      MessageBox.Show(this, ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Warning); 
     } 
    } 

回答

0

在這種情況下,解決方案可能會使用消息。你有沒有看過Mvvm Light Toolkit的消息?這是溝通距離對象,其他窗口等的好方法。你可以實現你自己的消息機制,通過創建一個靜態類(對所有的應用程序都是一樣的),然後實現你自己的訂閱/調用機制......希望對你有所幫助。

0

如果綁定兩個視圖相同的對象,那就是改變對象應該簡單地提高OnProperyChanged事件。如果視圖綁定到兩個不同的對象(ViewModels),但這些ViewModel共享相同的模型,那麼您可能希望從另一個ViewModel中通知一個ViewModel該模型已更改。

相關問題