5

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

选项卡控件的数据上下文正在正确更改,但在更改命令后正在旧数据上下文中调用。

4

2 回答 2

2

找到了解决方案:http ://social.msdn.microsoft.com/Forums/en/wpf/thread/2cbec263-df05-4000-9077-35861fc2fa8e

但是 datacontext auf contextmenus 没有正确更改似乎是一个错误。

于 2011-02-03T08:00:00.060 回答
0

@里克。否决票的原因:

  1. 它没有回答OP的问题。他在调试数据上下文,你在 XAML 中做所有事情。

  2. 它对我不起作用。我认为这是由于 OP 注意到的相同错误。

公平地说,这不是你的错:这显然是微软处理 ContextMenus 的 DataContext 继承方式的一个错误,但你的答案似乎并没有解决 OP 的问题,我的问题也没有。

在此处输入图像描述

于 2011-04-20T19:21:11.923 回答