У меня есть WPF-приложение с двумя windows в качестве просмотров (MVVM). С первой связывание команд работает довольно хорошо, хотя со вторыми командами представления не срабатывают (обе windows обращаются к одной и той же модели представления). Неважно, связаны ли они с кнопкой или ключевым событием и т. Д. c. Я заметил одну вещь; В окне свойств привязка команды не отображается в текстовом поле команды, хотя, как я догадываюсь, это необходимо.
Еще одна вещь, которую стоит упомянуть: 2-е окно / представление будет отображаться после нажатия кнопки в первом представлении + Первое окно все еще видно. Datacontext также будет делегирован во 2-й вид.
Вот последовательность моего кода:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:Lobpreis.ViewModels"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic" x:Class="Lobpreis.Views.LiederlisteView"
mc:Ignorable="d"
Title="LiederlisteView" WindowStyle="SingleBorderWindow" Height="450" Width="800" >
<Window.DataContext>
<vm:ShellViewModel/>
</Window.DataContext>
<Window.InputBindings>
<KeyBinding Key="Down" Command="{Binding PressKeyDown}" />
<KeyBinding Key="Up" Command="{Binding PressKeyUp}" />
</Window.InputBindings>
<Grid > etc...
Вот как я обработал передачу Datacontext:
LiederlisteView MeineLiederlisteView = new LiederlisteView();
MeineLiederlisteView.DataContext = this;
MeineLiederlisteView.ShowDialog();
MeineLiederlisteView.Focus();