Моя первая настройка архитектуры приложения MVVM - PullRequest
0 голосов
/ 08 января 2011

Хорошо, пришло время для моего первого проекта WPF :).Я раньше работал с Flex и PureMVC и знаю, как важна настройка проекта в RIA.Я решил работать с MVVM.И решил поработать с PRISM framework.Приложение похоже на операционную систему.Там будет «оболочка» (родитель для небольших приложений).Меньшее приложение я планирую сделать как модули.Поэтому я планирую спроектировать структуру проекта примерно так:

Module_A {view, viewModel, model, assets} // например калькулятор Module_B {view, viewModel, model, assets} // notebook

и т. Д. Я читаю Prism Doc и вижу, что parrent для всех этих модулей должен быть проектом оболочки, и это мой главный вопрос здесь.Bootstrapper.cs, Shell.xaml}

Поскольку эта оболочка будет полноэкранной с фоновыми изображениями (например, операционной системой), щелкните правой кнопкой мыши с некоторыми функциями.Это нормально для создания структуры папок, как в модулях XYZ для Shell.xaml здесь?Я хочу начать проект с хорошей структурой, поэтому любые советы приветствуются.Спасибо

Может быть, мне было непонятно.Могу ли я использовать Shell для добавления некоторой функциональности (в манере MVVM), например, установить ее в полноэкранный режим, всегда сверху и т. Д. Или нет?

Я хочу, чтобы оболочка находилась в режиме полного киоска.И я сделал кое-что об этом с помощью следующего кода.Но когда я нажимаю 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 Ответ

1 голос
/ 09 января 2011

Самый простой способ добиться желаемого эффекта - настроить оболочку. В частности, установка следующих значений в Shell.xaml номинально даст желаемый результат:

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

и если эти свойства не нужно изменять, тогда этот подход уже дружественен к MVVM, поскольку это просто проблема представления.

...