2011-01-28 37 views
5

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

+0

我已经确切地与ContextMenus绑定了同样的问题。我想我会手动刷新绑定,当datacontext更改。 – Botz3000 2011-01-28 08:19:55

回答

0

@Rick。 downvote的原因:

  1. 它没有回答OP的问题。他正在调试数据上下文,您正在做XAML中的所有工作。

  2. 它不适合我。我认为这是由于OP注意到的相同错误。

公平的说,这不是你的错:它显然是在微软正在处理的DataContext继承了ContextMenus方式的错误,但你的答案没有出现已经解决了OP的问题,也不是我的。

enter image description here