如何使用WPF/数据绑定坚持MVC

如何使用WPF/数据绑定坚持MVC,wpf,model-view-controller,data-binding,Wpf,Model View Controller,Data Binding,请容忍我,因为我是WPF/XAML新手。我正在尝试编写一个MainWindow.xaml/App.xaml对,以尽可能接近模型视图控制器,正确地隔离样式化和数据绑定。到目前为止: 我有一个styles.xaml,它包含所有格式(字体、边距等)。它是从app.xaml的Application.Resources引用的,因此它可以应用于项目中的所有WPF表单 模型数据集合作为应用程序的成员变量存在,应用程序通过GetX()accessor函数公开它们 mainwindow.xaml包含视图结构以及

请容忍我,因为我是WPF/XAML新手。我正在尝试编写一个MainWindow.xaml/App.xaml对,以尽可能接近模型视图控制器,正确地隔离样式化和数据绑定。到目前为止:

  • 我有一个styles.xaml,它包含所有格式(字体、边距等)。它是从app.xaml的Application.Resources引用的,因此它可以应用于项目中的所有WPF表单
  • 模型数据集合作为应用程序的成员变量存在,应用程序通过GetX()accessor函数公开它们
  • mainwindow.xaml包含视图结构以及绑定信息。这是这样做的:

    ObjectDataProvider x:Key=“AppX”MethodName=“GetX” ObjectInstance=“{x:静态本地:App.Current}”

mainwindow.xaml包含绑定信息的事实是错误的,因为这应该是控制器(应用程序)的角色。不幸的是,我发现WPF设计器的一个限制是(例如)不能有两个未知的资源引用(一个用于视图样式,一个用于数据绑定样式)。类似地,app.xaml不能在其参考资料部分同时包含styles.xaml引用和一组数据绑定样式

理论上,我可以从应用程序的启动处理程序中手动实例化主窗口,然后在代码中进行绑定,但这在两个方面违反了WPF的精神——应用程序不需要创建窗口,就像在后台那样;如果可能的话,绑定在XAML中比在代码中更好。如果有一种方法可以通知应用程序已经创建了主窗口,这样它就可以进行绑定,这还不错,但我没有看到任何方法(除了加载后主窗口调用应用程序,但这不应该是视图的责任)


所以我有点左右为难。我不知道有什么方法可以在仍然使用“WPF方式”的情况下正确地遵循MVC——似乎默认情况是VS设计器创建一个整体式窗口XAML,该窗口的视图、视图样式化和控制器混乱不堪。任何关于如何做得更好的描述或链接到该主题的好网站都将不胜感激。

MVVM本质上就是MVC。在MVVM中,视图被额外分离为视图和视图模型,视图现在只是UI的控件,视图模型保存视图的数据和逻辑。另外,在MVVM中,视图和视图模型之间的关系也可以单独看作是MVC模式,其中M=ViewModel,V=View,C=DataBinding

使用MVC是否有严格的要求?MVVM-,-模式的引入是为了充分利用WPF数据绑定的强大功能。你是说你想用“WPF方式”做事——这种方式就是MVVM。我曾在一个团队中工作,该团队曾在一个大型项目上尝试为WPF执行MVP,我们花了一年多的时间撤销了这项工作,并将其转换为MVVM。这是一个更好的选择。Ops想添加这个答案作为评论。现在不能这么做布赖恩,西蒙-这正是我需要知道的。谢谢