【问题标题】:My first MVVM application architecture setup我的第一个 MVVM 应用程序架构设置
【发布时间】:2011-01-08 14:49:48
【问题描述】:

好的,我的第一个 WPF 项目的时间到了 :)。我以前使用过 Flex 和 PureMVC,我知道项目设置在 RIA 中的重要性。我决定使用 MVVM。并决定使用 PRISM 框架。应用程序类似于操作系统。将有“外壳”(较小应用程序的父级)。我计划制作类似模块的更小的应用程序。所以我打算设计这样的项目结构。

Module_A {视图、视图模型、模型、 assets} // 例如计算器 Module_B {视图、视图模型、模型、 assets} // 笔记本

等 我阅读了 prism 文档,发现所有这些模块的父级都应该是 shell 项目,这是我的主要问题。

Parrent_Project {App.xaml, Bootstrapper.cs、Shell.xaml}

因为这个 shell 将全屏显示背景图像(如操作系统),所以右键单击一些功能。可以在这里为 Shell.xaml 创建像 modulesXYZ 这样的文件夹结构吗?我想以良好的结构开始项目,所以欢迎任何建议。谢谢

也许我不清楚。我可以使用 Shell 为它添加一些功能(以 MVVM 方式),例如将其设置为全屏、始终在顶部等。还是不可以?

我希望 shell 处于完整的 kiosk 模式。我用下面的代码做了一些事情。但是当我按下 alt + tab 时,win 键或其他任务栏会超出我的应用程序。有什么解决办法吗:

public class Interop
    {
        [DllImport("user32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();

        public static IntPtr GetWindowHandle(Window window)
        {
            return new WindowInteropHelper(window).Handle;
        }
    }

public Shell()
        {            
            InitializeComponent();



            IntPtr window = Interop.GetWindowHandle(this);
            IntPtr focused = Interop.GetForegroundWindow();
            if (window != focused)
            {
                Interop.SetForegroundWindow(window);
            }

        }

【问题讨论】:

    标签: c# .net wpf mvvm prism


    【解决方案1】:

    实现所需效果的最简单方法是配置 shell。具体来说,在Shell.xaml 中设置以下值通常会提供所需的结果:

    <Window ... WindowStyle="None" WindowState="Maximized" Topmost="True>
    

    如果这些属性不需要更改,那么这种方法已经对 MVVM 友好,因为它纯粹是一个视图问题。

    【讨论】:

    • 好的,谢谢你带我走上好路。但我有一个小问题。我有一些细节有问题,请你检查一下。
    • 更改应用程序的启动方式比试图阻止始终运行的资源管理器显示要好。为此,请将您的应用程序替换 Explorer 作为登录外壳。这是一个简单的注册表设置。
    • 对不起,我谷歌了一整天,但我找不到任何有用的解释。您能否提供一些链接或代码作为起点如何防止用户通过按键离开应用程序?
    • 现在大多数人称之为“Kiosk 模式”。这是一个起点:social.answers.microsoft.com/Forums/en-US/w7desktop/thread/…
    猜你喜欢
    • 2011-10-04
    • 2019-01-01
    • 1970-01-01
    • 2012-01-20
    • 2012-11-30
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多