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, только они показывают разные вещи.
Надеюсь, это поможет!