2011-01-28 34 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