我的第一个MVVM应用程序架构设置

时间:2011-01-08 14:49:48

标签: c# .net wpf mvvm prism

好的,我的第一个WPF项目的时间到了:)。我以前使用Flex和PureMVC工作,我知道项目设置在RIA中是如何重要的。我决定使用MVVM。并决定使用PRISM框架。应用程序就像操作系统一样。将有'shell'(较小的应用程序的父级)。较小的应用程序我打算制作类似的模块。所以我打算设计类似这样的项目结构。

  

Module_A {view,viewModel,model,   assets} //例如计算器   Module_B {view,viewModel,model,   assets} // notebook

等 我读了prism doc,我看到所有这些模块的parrent应该是shell项目,这是我的主要问题。

  

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

由于此外壳将全屏显示背景图像(如操作系统),因此右键单击某些功能。可以在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);
            }

        }

1 个答案:

答案 0 :(得分:1)

实现所需效果的最简单方法是配置shell。具体而言,在Shell.xaml中设置以下值将名义上提供所需的结果:

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

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