wpf приложение с двумя мониторами? - PullRequest
1 голос
/ 28 сентября 2011

Я очень новичок в WPF. Я хочу создать приложение с двумя мониторами / проекторами. То, что я хочу сделать, это иметь «экран докладчиков» на одном мониторе и другую панель на дополнительном мониторе, аналогично тому, как работает powerpoint. Я изо всех сил пытаюсь сосредоточиться на панелях и XAML. Так что я после того, как пользователь нажимает на кнопку на экране 1 и информация обновляется на экране 2.

Я использую этот код:

this.Width = System.Windows.SystemParameters.VirtualScreenWidth;
this.Height = System.Windows.SystemParameters.VirtualScreenHeight;
this.Top = 0;
this.Left = 0;

для установки ширины и высоты экрана.

Edit:

Более поздняя цель - заставить screen2 извлекать элементы из базы данных на основе выбора на screen1

.

Вопрос: учебные пособия, места, куда пойти, как обновить монитор2 с помощью кнопки на мониторе1

Ответы [ 2 ]

5 голосов
/ 28 сентября 2011

Короткий ответ

Создать модель представления, которая разделяла между двумя представлениями; сделайте одно из представлений master (вносит изменения), а другое - чистым представлением. Виды - новые окна. Изначально не обращайте внимания на положение окна (мы вернемся к этому позже), просто работайте совместно используемой моделью представления.

Совет: исследуйте паттерн MVVM. Google имеет много статей на эту тему.

Длинный ответ

После того, как вы исследовали MVVM и создали несколько примеров приложений (из scatch или с использованием фреймворка), ниже приведено несколько дополнительных функций, которые вы хотите реализовать для создания приложения, похожего на powerpoint.

  • Полноэкранный режим

    По крайней мере, вы хотите, чтобы окно презентации было полноэкранным. Для этого вы установите WindowStyle на None и AllowsTransparency на True.

    Если вы хотите сделать второе окно также полноэкранным, вам может потребоваться выполнить некоторые переопределения Win32, чтобы окно развернулось должным образом, не закрывая панель задач (оставьте комментарий, если вы хотите знать, как это сделать).

  • Обнаружение нескольких мониторов

    Получите размер и положение мониторов, используя Win32 Команды взаимодействия. В Интернете будет много статей, которые помогут вам в этом (или разместят еще один вопрос StackoverFlow).

    Это будет отличная функция ™, поскольку она будет правильно позиционировать два окна (используйте дополнительный экран в качестве презентации).


Это все, что я могу придумать сейчас, пост-ответ, если у вас возникнут вопросы по MVVM или любому из дополнительных пунктов выше.

4 голосов
/ 28 сентября 2011

1) У вас должно быть 2 Windows, как бы это выглядело, я бы сделал monitor2 дочерним окном monitor1 (в конце концов, это дочернее окно;)
Под этим я подразумеваю, что это StartupUri в App.xaml должен указывать на monitor1, а в конструкторе monitor1 вы должны создать экземпляр monitor2 (который был бы одиночным, если бы я это сделал).

2) Чтобы развернуть окно на втором экране: Подписатьсяк событию Loaded окна (в выделенном коде) и задайте

private void Window_Loaded(object sender, RoutedEventArgs e) {
            WindowState = WindowState.Maximized;
        }

Дополнительная информация (и источник): здесь

3) Как это сделатьчтобы монитор2 реагировал, когда вы устанавливаете что-то в monitor1, заставьте monitor1 и monitor2 связываться с одной и той же ViewModel, только они показывают разные вещи.

Надеюсь, это поможет!

...