当前位置: 首页 > 编程语言 > C#

WindowsMVVM中的通用应用分享

时间:2023-04-10 23:36:54 C#

WindowsMVVM中的通用应用刚开始在通用应用中开发。我在Windows8StoreApps以及WindowsPhone8和WindowsPhone8.1(SilverLight)应用程序中开发过应用程序。该问题与Windows中的通用应用程序和App中创建的单一UI有关。共享文件夹。我是MVVM的新手。我以正常方式开发了WindowsPhone8和WP8.1应用程序。但不是MVVM。我在谷歌上搜索了很多,但没有找到任何示例来更好地理解MVVM。我知道MVVM是什么。它类似于Asp.net的MVC。MVVM即Model:DescribedataView-Model:简单的说就是Model和View之间的桥梁。视图:简单的xaml页面或用户界面。在WindowsPhone8MVVM或普通方式中执行代码哪种方式更好或更好?正常方式意味着不使用MVVM。参考:使用模型-视图-视图模型模式分离UI和应用程序逻辑这是一篇文章中回答的广泛问题。我将提供一些方面供反思和研究。(注:本文所有代码都是免内存的,可能不是100%句法正确。)大部分在MVVM的定义上都是正确的。MVVM和MVC之间的主要区别在于绑定用于将视图连接到视图模型(控制器)。这是语义,没有必要坚持下去。不管您是WP7、WP8、WP8.1、Siverlight还是UniversalApp。从MVF开始可能是最简单的,因为当引入MVVM时,运行应用程序的速度更快,因为它无法在模拟器中运行。首先是从一个非常基本的例子开始。1)创建文件夹“Views”和“ViewModels”。绝对没有必要,但你会想要它们。2)用TextBlock创建一个空白页。这是包含代码的xaml文件。在Views文件夹中创建它并将其命名为MyFirstPage。像这样放置一个文本块:3)运行应用程序并确保显示该文本。4)创建一个ViewModel类。这是一个基本的类文件。在ViewModels文件夹中创建它并将其命名为MyFirstViewModel。5)将页面(视图)连接到ViewModel。这是我的代码背后的样子,在大多数情况下,这就是我所拥有的。将DataContext设置为视图模型是设置绑定的关键。有许多其他框架可以发挥这种魔力,但这就是发生的情况。我认为这是最好的起点。publicclassMyFirstPage:Page{privateMyFirstViewModel_viewModel=newMyFirstViewModel();publicMyFirstPage(){this.Initialize???this.DataContext=_viewModel;}6)将Title属性添加到视图模型,现在让它返回一个硬编码值。publicstringTitle{get{return“我的应用程序的标题(从视图模型设置)”;}}7)更新视图上的TextBlock以使用绑定8)运行应用程序以测试其是否正常工作。这是将视图模型连接到视图并查看绑定工作的基础知识。接下来学习:Two-WayBinding:如果你想在一个TextBox中的UI上设置一个值,你需要将绑定更新为{BindingFirstName,Mode=TwoWay}作为例子,如果你想输入一个名字。可观察属性:你会发现的另一个问题是,当你查看模型逻辑时,改变绑定属性的值,那些值不会显示在UI上。您会抓狂地想知道出了什么问题,但这很简单。需要通知UI更新。您更改了基础值,但UI并不打算更新。因此,对于像FirstName这样的属性,您需要在ViewModel上实现INotifyPropertyChanged并在属性的设置器中调用OnPropertyChanged("FirstName")。有很多例子可以说明这一点。ObservableCollections:与ObservableProperties类似,如果你有一个在视图模型中调整的项目列表,你需要通知视图该列表已更改。这样做的方法是使该属性成为一个ObservableCollection。同样,很多例子。我的建议是为这些属性实现一个getter。你想在构造函数中创建一次集合,或者在属性的getter中延迟加载。如果您创建一个新的ObservableCollection实例,那么到UI的链接将中断,您必须为此调用OnPropertyChanged,如果您仅使用ObservableCollection的单个实例并从中删除项目,则实际上不需要这样做。玩了一会儿你就会明白我的意思了。再读一遍。转换器:现在我们进入下一个级别,但为了保持代码整洁,您将使用转换器和中继命令。最常见的转换器是BooleanToVisibilityConverter。这将有助于根据视图模型上的布尔值控制视图组件的可见性。同样,您将不得不对此进行研究。中继命令:与转换器一样,您需要使用中继命令来保持代码整洁。中继命令基本上是点击事件的绑定。您不会在后面的代码中使用单击事件处理程序,而是在ViewModel中实现Relay命令,例如,Button命令将绑定到ViewModel上的RelayCommand属性。一旦您研究并熟悉了这些程序,您就会有一个良好的开端。代码隐藏问题在某些情况下很难避免,但我发现我能够找到大多数问题的解决方案,然而,这有时需要创造力。最后一条评论:我创建一个严格干净的ViewModel的目标是我可以跨外形(手机和平板电脑)重用它。这是可能的,但一旦你深入研究更难的问题就更难了。但是,这里的关键是您有一个单独的Lib项目供您的ViewModel使用。我所有的解决方案都有WindowsPhone8.1项目、Windows8.1(Store)项目和PortableclassLib项目。ViewModels文件夹将与所有其他可共享代码一起进入Lib项目。您可能必须使用控制反转才能使一切正常,但这是另一篇文章的主题。祝你好运,Tom在这里查看NicoVermeir关于MVVMLight的入门教程http://www.spikie.be/blog/post/2014/06/30/.aspx答案太大,无法在stackO上发布,所以请关注网址:)以上是《C#学习教程:WindowsMVVM中的通用应用》分享的全部内容。网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: