C# 在ViewModel中执行什么操作以及在xaml.cs文件中执行什么操作
我试图通过创建一个UWP项目来学习MVVM模型。从我收集的信息来看,ViewModel应该独立于实际视图(便携?)。我只是想澄清一下我的理解是否正确 假设我有一个C# 在ViewModel中执行什么操作以及在xaml.cs文件中执行什么操作,c#,.net,xaml,mvvm,uwp,C#,.net,Xaml,Mvvm,Uwp,我试图通过创建一个UWP项目来学习MVVM模型。从我收集的信息来看,ViewModel应该独立于实际视图(便携?)。我只是想澄清一下我的理解是否正确 假设我有一个SplitView: <Grid> ... <Button Click="ActivateRelativePanel Content="CLICK!"/> <SplitView> <SplitView.Pane>
SplitView
:
<Grid>
...
<Button Click="ActivateRelativePanel Content="CLICK!"/>
<SplitView>
<SplitView.Pane>
...
</SplitView.Pane>
<SplitView.Content>
<Frame Name="MyFrame"/>
</SplitView.Content>
</SplitView>
</Grid>
...
嗯,有几件事:
- MVVM模式允许您将视图和业务逻辑解耦。有很多优点,其中之一就是测试。您可以在不考虑视图的情况下测试视图模型,因为它是独立的(您的视图模型没有任何视图意识)。分离关注点也是组织代码的一个很好的实践
- 从这一点开始,您应该在代码中尽可能少的代码后面放置。可接受的代码是专门操纵UI元素的代码,如调整大小、管理动画等。。。所有与数据和其他内容相关的内容都应该直接进入视图模型
- 导航也应该从视图模型处理,因为逻辑发生在那里,导航依赖于逻辑
对于你的IsOpenPane案件,这是一个有争议的话题。它操纵UI元素,但我怀疑它是从业务逻辑操纵的。因此,就我个人而言,我会在视图模型中声明一个公共属性,并将其绑定到xaml属性IsPaneOpen
关于UWP MVVM指南,您应该看到
它不仅适用于UWP,而且资源非常古老,但概念是相同的(只有一些XAML元素不同,但模式和精神完全相同)
但最重要的是:
微软MVA真的很棒强>
一旦您能够轻松使用XAML和MVVM,请参阅。这是微软关于UWP和设计的官方文档,在这里你可以掌握一些关键概念,如响应式设计技术(这是UWP特有的,并提供了一些工具,使通用应用程序可以在任何显示器上使用,从物联网到电视)。当然,它写得很好,结构也很好。非常翔实,谢谢!我想我已经看到了那个页面,但我想我可能会找到一个不同的UWP特定指南。不过,既然它们都很相似,我就来看看那个链接!非常感谢您的回复@不客气!我添加了一个指向MicrosoftMVA的链接,从零开始非常棒。