2010-06-04 99 views
0

我有一個wpf應用程序,它顯示5個不同的用戶控件,當你通過系統。每個用戶控件都有一個列表框。所以我想選擇一個項目並將其傳回給MainViewModel。我現在有它的工作,以便我可以在ViewModelBase中存儲一個值,但似乎調用User控件的策略是有缺陷的,因爲我無法鏈接到每個單獨的ViewModel,但只能連接到ViewModelBase。我明白的地方,我要去錯了,但我不知道有沒有辦法做到這一點通過seperately而不是初始化每個用戶控件就在viewModelBase因爲我在這裏做的:WPF應用程序有幾個用戶控件將值傳遞給MainViewModel(MVVM)

private ViewModelBase _control; 
    public ViewModelBase Control 
    { 
     get { return _control; } 
     set 
     { 
      _control = value; 
      OnPropertyChanged("Control"); 
     } 
    } 

,然後我說上加載

 Control = new MainScreenViewModel(); 
    ynd = new YesNoDelegate(YesNoNavigation); 
    Control.SetReturnData(ynd); 
    Control.name = "MainScreen"; 
然後

控制被稱爲XAML中像

 <ContentControl Content="{Binding Control}" Height="350" Width="525" Grid.Column="1"/> 

任何幫助將大大appriciated。
謝謝。

+0

我不知道我是否是唯一一個不瞭解你設計的人。但是,你能清楚地解釋你的設計嗎?這是什麼意思:'所以我想選擇一個項目並將其傳遞迴MainViewModel'。你想選擇一個ListBoxItem?所有的用戶控件和主視圖都共享同一個數據上下文嗎? – Amsakanna 2010-06-04 09:27:46

+0

基本上,我有ViewModels爲每個usercontrol.So可以說有usercontrol1.xaml有一個listbox.I有一個personVariable在我的usercontrol1viewmodel,我存儲在那裏選擇的項目。現在我希望這將傳遞迴我的mainViewModel時我點擊一個按鈕。這適用於當我的ViewModelBase中的變量(我有權發送委託)「ynd = new yesnodelegate(yesNoNavigation); Control.SetReturnData(ynd);」這setReturnData方法是在ViewModelBase,但我希望它在Usercontrol1ViewModel,但它不會訪問它。抱歉令人困惑。即時通訊仍在學習MVVM – dstuction 2010-06-04 09:41:34

回答

0

我從使用信使類切換到使用命令管理是原產於WCF 具體定義自定義RoutedUICommand 然後在需要響應該命令的一個或多個位置使用CommandManager.RegisterClassCommandBinding。

的優點是不必從mediatorbase 不必依賴於筆者採空maintainng代碼繼承(雖然它寫得很好!) 不必使用裝飾和依靠字符串的消息鍵

相關問題