내 응용 프로그램에 메뉴가 있습니다. 예상대로 같은계층 적 데이터 형식의 명령 바인딩
<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>
메뉴가 보이지만, 명령은 각 메뉴 항목에 대한 해고되지 않은 : 나는 계층 적 데이터 템플릿을 사용하여 시각화하고있어! 더군다나 디버거에서 볼 수있는 바운더리가 아닙니다 : ICommand 프로퍼티의 get 접근자가 결코 실행되지 않았습니다. 왜 이렇게됩니까? 평소와 같이 이렇게
완벽하게 작동합니다
<Menu>
<MenuItem Header="SomeHeader" Command="{Binding RunOperationCommand}"/>
<Menu>
감사 정적 리소스를 확인 repl 와이. "부모"와 "로컬"데이터 인터페이스에 대한 귀하의 생각에 관해서. 나는 그들이 왜 다른지 이해하지 못한다. 나는 menu와 menuitem이 parent datacontext를 파생해야한다고 생각했다. datacontext가 종속성 속성의 기능 중 하나가 아닌가? –
메뉴와 메뉴 항목에 동일한 데이터 컨텍스트가있는 경우 {Binding Name}은 항상 공통 datacontext의 동일한 속성 Name에 바인딩됩니다. 하지만 Name을 실제 메뉴 항목의 엔터티에 바인딩하려고합니다. 따라서 {RunOperationCommand 바인딩}은 같은 효과를 주며 메뉴 항목에서 RunOperationCommand를 검색합니다. 그것은 당신의 질문에 대답합니까? –
아, 고마워! 나는 그것을있어! –