我有一个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。
谢谢。
我不知道我是否是唯一一个不了解你设计的人。但是,你能清楚地解释你的设计吗?这是什么意思:'所以我想选择一个项目并将其传递回MainViewModel'。你想选择一个ListBoxItem?所有的用户控件和主视图都共享同一个数据上下文吗? – Amsakanna 2010-06-04 09:27:46
基本上,我有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