我在我的 ViewModels 中使用 RelayCommands 来摆脱代码背后的问题。RelayCommands 正在工作,但在这种情况下除外:定义 RelayCommands 的 ViewModel 会随着数据上下文的变化而变化。如果在数据上下文更改后触发命令,则会在“旧”视图模型中触发。在调试时,我可以看到属性来自旧的数据上下文。但是在视图中一切都很好,因为显示了正确视图模型的正确数据。
那么有界命令是否有可能无法对数据上下文的变化做出反应?还是可能有其他问题?
这里是代码片段:
<TabControl x:Name="TestView" DataContext="{Binding Path=SelectedParentElement}"
TabStripPlacement="Top" ItemsSource="{Binding Path=ChildElements, Mode=OneWay}"
SelectedValue="{Binding Path=SelectedChildElement, Mode=TwoWay}">
<TabControl.ContextMenu>
<ContextMenu>
<MenuItem Header="Klassifikation" Name="Klassifikation">
<MenuItem Header="Kindebene" Name="KlassisfizierendNext" Command="{Binding KlassifizierendNextCommand}"/>
</MenuItem>
</ContextMenu>
</TabControl.ContextMenu>
.......
</TabControl>
选项卡控件的数据上下文正在正确更改,但在更改命令后正在旧数据上下文中调用。