我在我的ViewModels中使用RelayCommands來刪除後面的代碼。 RelayCommands正在工作,除了在這種情況下:其中定義RelayCommands的ViewModel隨着datacontext的更改而改變。如果在datacontext更改後觸發命令,則會在「舊」視圖模型中觸發它。在調試時,我可以看到這些屬性來自舊的datacontext。但在視圖中,一切都很好,因爲顯示了正確視圖模型的正確數據。RelayCommand調用「舊」DataContext
那麼是否有可能有界的命令無法對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>
中的tabcontrol的DataContext的正確改變,但改變命令後,被稱爲舊的datacontext。
我已經確切地與ContextMenus綁定了同樣的問題。我想我會手動刷新綁定,當datacontext更改。 – Botz3000 2011-01-28 08:19:55