2012-04-28 124 views
0

我正在使用Caliburn.Micro,並且在內容控制中使用了具有子虛擬機的MainWindowViewModel設置。在主VM中,我有一個子VM屬性,它允許我在虛擬機之間共享屬性。我在兩個VM上都有一個UserName屬性。在2個虛擬機之間共享屬性

在主視圖上,我在用戶名的末尾添加了一個字符串,以便對其進行個性化設置,而在子View上,我只是按原樣顯示用戶名。用戶名屬性只能在子虛擬機中編輯,而不能在主虛擬機中編輯。當我在孩子中編輯它時,它不會更新父代。我不知道如何綁定這些屬性以使父虛擬機與虛擬機同步。

主要VM:

public string UserName 
     { 
      get { return string.Format("{0}'s Diary Log", DiaryViewModel.UserName); } 
     } 

private DiaryViewModel _diaryViewModel; 
     public DiaryViewModel DiaryViewModel 
     { 
      get { return _diaryViewModel; } 
      set 
      { 
       _diaryViewModel = value; 
       NotifyOfPropertyChange(() => DiaryViewModel); 
      } 
     } 

兒童VM:

private string _userName = "John"; 
     public string UserName 
     { 
      get { return _userName; } 
      set 
      { 
       _userName = value; 
       NotifyOfPropertyChange(() => UserName); 
      } 
     } 
+0

什麼是你的孩子VM,DiaryViewModel?還是不同的東西?即你應該從相同的來源'畫',並且所有的都要通過兒童虛擬機 - 你的問題應該得到解決。讓我知道一些細節,我會舉個例子。 – NSGaga 2012-04-28 17:44:46

回答

0

你可以只綁定在對的MainView你DiaryViewModel.UserName控制和執行字符串格式化就在的.xaml。不要忘記用斜槓在字符串格式中跳過撇號。

<TextBlock Text="{Binding Source=DiaryViewModel.UserName, StringFormat='\{0}\'s Diary Log'}" /> 
+0

我在視圖中有一個標籤,而不是一個文本塊,所以我想我必須切換它,所以我可以使用StringFormat。感謝你的回答。 – 2012-04-28 18:02:03

相關問題