ViewModels で RelayCommands を使用して、コード ビハインドを削除しています。RelayCommands は機能していますが、この状況を除きます。RelayCommands が定義されている ViewModel は、datacontext の変更に伴って変更されます。データコンテキストの変更後にコマンドが起動される場合、コマンドは「古い」ビューモデルで起動されます。デバッグ中に、プロパティが古いデータ コンテキストからのものであることがわかります。しかし、正しいビューモデルの正しいデータが表示されるため、ビューではすべて問題ありません。
では、バインドされたコマンドがデータコンテキストの変更に反応できない可能性はありますか? それとも他に何か問題があるのでしょうか?
コードの一部を次に示します。
<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>
タブコントロールのデータコンテキストは正しく変更されていますが、変更後、コマンドは古いデータコンテキストで呼び出されています。