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