使用MVVM绑定MainWindow上的UserControl视图模型我是WPF和MVVM的新手,正在尝试学习WPF如何使用MVVM。为此,我做了如下样UserControl1.xamlUserControl1ViewModel.csclassUserControl1ViewModel{publicstringMyString{get;放;}}MainWindow.xaml//尝试在MainWindowVM上绑定Usercontrol1VMobjMainWindow.xaml.cspublicMainWindow(){InitializeComponent();this.DataContext=newMainWindowViewModel();}MainWindowViewModel.cs类MainWindowViewModel{publicMainWindowViewModel(){ShowMeOne=newRelayCommand(Prompt_ShowMeOne);ShowMeAnother=newRelayCommand(Prompt_ShowMeAnother);UC1Property.MyString="初始";}privatevoidPrompt_ShowMeAnother(objectobj){global::System.Windows.MessageBox.Show("另一个应该显示");UC1Property.MyString="上次点击:另一个";}privatevoidPrompt_ShowMeOne(objectobj){global::System.Windows.MessageBox.Show("应该显示一个");UC1Property.MyString="上次点击:一";}公共ICommandShowMeOne{得到;放;}publicICommandShowMeAnother{get;放;}//用户C主窗口的ontrol1视图模型publicUserControl1ViewModelUC1Property{get;放;问题:现在,如何将Usercontrol的Datacontext传递给MainWindow?--------------------------在MainWindow.xaml中---------------------//尝试在MainWindowVM上绑定Usercontrol1VMobj----------------------------在MainWindowViewModel.cs中-------------//MainWindow的UserControl1视图模型publicUserControl1ViewModelUC1Property{get;放;我试过的上面的代码没有按预期工作在窗口上传递用户控件的数据上下文的标准方法是什么?您对MVVM、Views和UserControls有一个常见的误解。UserControl是可重用的代码,不特定于某个应用程序。也就是说,当您创建一个新的UserControl时,没有UserControl。UserControl是自我维持的,用户控件所需的所有逻辑都在代码中。需要说明的是,这并不违反MVVM模式。MVVM模式适用于视图和视图模型以及它们的交互方式。View(纯XAML,无逻辑)之间存在细微差别。视图通常也继承自UserControl,但视图仅适用于您正在开发的应用程序。您不太可能在其他应用程序中重用此功能。这就是UserControls的区别。例如,日历用户控件是可重用的,选择和显示日历的所有逻辑都是其控制代码的一部分,您可以在多种类型的应用程序中使用它。创建使用数据绑定的UserControl时,需要在用户控件中公开依赖属性,在日期选择器用户控件上,这可能是MinDate、MaxDate、SelectedDate、FirstDayOfTheWeek(星期日或星期一)和/或控件的属性格式并隐藏UserControl的XAML中的所有其他属性(不通过依赖属性公开它们)。以上就是C#学习教程:使用MVVM在MainWindow上绑定UserControlView模型的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
