J'ai le menu dans mon application. Je visualise à l'aide de modèle de données hiérarchique:Commande Binding dans le datatemplate hiérarchique
<MenuItem Header="Main menu" ItemsSource="{Binding ApplicationMenu}" >
<MenuItem.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type tm:RMenuItem}"
ItemsSource="{Binding Path=ChildrenItems}">
<MenuItem Header="{Binding Name}" Command="{Binding RunOperationCommand}" />
</HierarchicalDataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
le menu
ressemble comme il se doit, mais commande pour chaque élément de menu est pas tiré! Encore plus - il n'est pas borné, ce qui pourrait être vu dans le débogueur: get accessor de ICommand Property n'a jamais été exécuté. Pourquoi cela arrive-t-il?
Faire comme d'habitude fonctionne parfaitement:
<Menu>
<MenuItem Header="SomeHeader" Command="{Binding RunOperationCommand}"/>
<Menu>
Merci pour repl y. Concernant votre réflexion sur le contexte de données «parent» et «local». Je ne comprends pas pourquoi ils diffèrent. J'ai supposé que menu et menuitems devraient dériver datacontext parent. N'est-ce pas l'une des fonctionnalités de la propriété de dépendance, qui est le datacontext? –
Si le menu et les éléments de menu avaient le même contexte de données, le {Nom de la liaison} serait toujours lié au même nom de propriété dans ce contexte de données commun. Mais vous voulez que Name se lie à l'entité de l'élément de menu actuel. Par conséquent {Binding RunOperationCommand} a le même effet, il recherche le RunOperationCommand sur l'élément de menu. Est-ce que cela répond à votre question? –
Oh, merci! J'ai compris! –