2010-06-04 182 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代码继承(虽然它写得很好!) 不必使用装饰和依靠字符串的消息键

相关问题