命令绑定不适用于第二个 window/ 视图
Command Bindings don't work with 2nd window/ view
我有一个 WPF 应用程序,其中有两个 windows 作为视图 (MVVM)。第一个命令绑定效果很好,但第二个视图命令不会触发(两个 windows 访问相同的视图模型)。它们是否绑定到按钮或按键事件等并不重要。我注意到一件事;在属性框中,命令绑定在命令文本框中不可见,但我猜应该是。
还有一件事要提:第二个 window/view 将在从第一个视图单击按钮后显示 + 第一个 window 仍然可见。 Datacontext 也将委托给第二个视图。
这是我的代码序列:
<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();
您正在尝试将第二个视图的 DataContext 绑定到第一个视图而不是第一个视图的 DataContext。
尝试替换
MeineLiederlisteView.DataContext = this;
和
MeineLiederlisteView.DataContext = this.DataContext;
我有一个 WPF 应用程序,其中有两个 windows 作为视图 (MVVM)。第一个命令绑定效果很好,但第二个视图命令不会触发(两个 windows 访问相同的视图模型)。它们是否绑定到按钮或按键事件等并不重要。我注意到一件事;在属性框中,命令绑定在命令文本框中不可见,但我猜应该是。
还有一件事要提:第二个 window/view 将在从第一个视图单击按钮后显示 + 第一个 window 仍然可见。 Datacontext 也将委托给第二个视图。
这是我的代码序列:
<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();
您正在尝试将第二个视图的 DataContext 绑定到第一个视图而不是第一个视图的 DataContext。
尝试替换
MeineLiederlisteView.DataContext = this;
和
MeineLiederlisteView.DataContext = this.DataContext;