2011-01-28 23 views
5

Tôi đang sử dụng RelayCommands trong ViewModels của tôi để ged loại bỏ các mã phía sau. Các RelayCommands đang làm việc, ngoại trừ trong trường hợp này: ViewModel trong đó các RelayCommands được định nghĩa được thay đổi với sự thay đổi của datacontext. Nếu một lệnh đang được kích hoạt sau khi thay đổi datacontext, nó sẽ được kích hoạt trong viewmodel "cũ". Trong khi gỡ lỗi, tôi có thể thấy rằng các thuộc tính là từ datacontext cũ. Nhưng trong quan điểm là tất cả mọi thứ tốt bởi vì các dữ liệu chính xác của viewmodel chính xác được hiển thị.RelayCommand được gọi trong "cũ" DataContext

Vì vậy, có thể các lệnh bị chặn không thể phản ứng với sự thay đổi của datacontext? Hoặc có thể có điều gì khác không đúng?

Dưới đây là một ảnh chụp của mã:

<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> 

Các DataContext của TabControl đang thay đổi một cách chính xác, nhưng sau khi thay đổi lệnh đang được gọi là trong DataContext cũ.

+0

Tôi đã có cùng một vấn đề với các ràng buộc trên ContextMenus. Tôi đoán tôi sẽ chỉ làm mới các ràng buộc bằng tay khi thay đổi datacontext. – Botz3000

Trả lời

0

@Rick. Lý do cho downvote:

  1. Nó không trả lời câu hỏi của OP. Anh ấy đang gỡ rối bối cảnh dữ liệu, bạn đang làm mọi thứ trong XAML.

  2. Nó không hiệu quả với tôi. Tôi cho rằng điều này là do cùng một lỗi mà OP nhận thấy.

Để công bằng, đây không phải là lỗi của bạn: nó rõ ràng là một lỗi trong cách mà Microsoft đang xử lý DataContext thừa kế cho ContextMenus, nhưng câu trả lời của bạn không dường như đã giải quyết vấn đề của OP, cũng không phải tôi .

enter image description here

Các vấn đề liên quan