如何用WPF实现一个最简单的Mvvm示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用WPF实现一个最简单的Mvvm示例相关的知识,希望对你有一定的参考价值。

参考技术A 用MVVMLIGHT很简单的 一个框架

MVVM 跨 WPF 区域实现

【中文标题】MVVM 跨 WPF 区域实现【英文标题】:MVVM Cross WPF Region Implementation 【发布时间】:2020-07-08 09:26:59 【问题描述】:

我如何用 MVVM Cross 和 WPF 实现这个视图演示;菜单、标签和内容视图?我找不到任何实际示例如何做到这一点。这是一个过时的实现 https://github.com/ThallisonRhanniel/MvvmCross-Samples/tree/master/XPlatformMenus 但我想使用 MvvmCross(6.x) 和 MvvmCross.Platforms.Wpf(6.x)。

主窗口:

[MvxWindowPresentation(Identifier = nameof(MainWindow), Modal = false)]
public partial class MainWindow : MvxWindow<MainWindowViewModel>

菜单:

[MvxContentPresentation(WindowIdentifier = nameof(MainWindow), StackNavigation = true)]
[MvxRegion("MenuContent")]
[MvxViewFor(typeof(MenuViewModel))]
public partial class MenuView

标签栏:

[MvxContentPresentation(WindowIdentifier = nameof(MainWindow), StackNavigation = true)]
[MvxRegion("PageContent")]
[MvxViewFor(typeof(TabViewModel))]
public partial class TabView

使用区域属性;

public class MvxRegionPresentationAttribute : MvxBasePresentationAttribute

    public string RegionName  get; set; 
    public string WindowIdentifier  get; set; 

MainWindow.xaml 内部;

<Frame x:Name="MenuContent"
       Grid.Column="0"
       NavigationUIVisibility="Hidden"></Frame>

<Frame x:Name="PageContent"
       Grid.Column="1"
       NavigationUIVisibility="Hidden"></Frame>

如何在 MVVMCross 6.x 中实现区域?

【问题讨论】:

【参考方案1】:

在搜索了所有 mvvmcross wpf github 项目后,我发现了各种实现,但只有一个更新版本; https://github.com/eiadxp/MvvmCross.Platforms.Wpf.ItemsViewPresenter 它使用 MvvmCross(6.x) 和 MvvmCross.Platforms.Wpf(6.x)。

【讨论】:

以上是关于如何用WPF实现一个最简单的Mvvm示例的主要内容,如果未能解决你的问题,请参考以下文章

WPF MVVM学习

MVVM 跨 WPF 区域实现

WPF MVVM+EF 增删该查 简单示例

WPF MVVM+EF增删改查 简单示例 1对1 映射

我是如何用最简单的前端技术揭示那些灰色产业背后的原理

如何用Java Socket实现一个简单的Redis客户端工具