我在我的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