Please let me update you, that I am working now on TreeListView with context menu. I've just researched on your examples and found very helpful demo - T601984. I've modified it a bit CanExecute functionality in a class ItemsViewModel and added Predicate<object> CanExecuteChecked(string param) in line 80. I am using it in line 73.
It's working fine, however I am confused why parameter of CanExecute is always null (class Commands, line 31). I curious whether it is a bug or it is a normal case.
As I can see in the sample project, you are not setting the CommandParameter property for your MenuItems. Thus it is expected to see that the CanExecute method is invoked with null as a parameter. If I set this property to a string value I can see that it is passed to both of the Execute and CanExecute methods:
Please test this approach and let me know your result.