5

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>

タブコントロールのデータコンテキストは正しく変更されていますが、変更後、コマンドは古いデータコンテキストで呼び出されています。

4

2 に答える 2

2

解決策を見つけました: http://social.msdn.microsoft.com/Forums/en/wpf/thread/2cbec263-df05-4000-9077-35861fc2fa8e

しかし、コンテキストメニューのデータコンテキストが正しく変更されないのはバグのようです。

于 2011-02-03T08:00:00.060 に答える
0

@リック。反対票の理由:

  1. OPの質問には答えません。彼はデータ コンテキストをデバッグしており、あなたは XAML ですべてを実行しています。

  2. それは私にはうまくいきません。これは、OPが気付いたのと同じバグによるものだと思います。

公平を期すために、これはあなたのせいではありません.MicrosoftがContextMenusのDataContext継承を処理する方法のバグであることは明らかですが、あなたの答えはOPの問題も私のものも解決していないようです.

ここに画像の説明を入力

于 2011-04-20T19:21:11.923 に答える