0
콘트롤 키가 눌려 졌는지 여부에 따라 헤더를 변경하고자하는 컨텍스트 메뉴가 있습니다. 지금 내가 가지고있는WPF 바인딩 질문 - 한정자 키 컨트롤을 기반으로 레이블 텍스트 변경
는
<MenuItem Header="Send To">
<MenuItem ... />
<MenuItem ... />
</MenuItem>
내가 할 수 아래 인 컨트롤 키를 기반으로 좋아 것
,
<MenuItem Header="Move To">
<MenuItem ... />
<MenuItem ... />
</MenuItem>
정말 할 필요가 있기 때문에, 헤더 텍스트를 변경입니다 코드 내에서 수정 자 키가 컨트롤인지 확인하는 방법을 알고 있습니다.
이 Aviad를 사용해 보았지만 제대로 작동하지 않는 것 같습니다. 응용 프로그램의 제목을 업데이트 할 수 있으며, 컨트롤을 아래/위로 움직여 앞뒤로 전환 할 수 있습니다. 그러나 컨텍스트 메뉴의 머리글은 변경되지 않습니다. 실제로는 비어 있습니다. 여기에 내가 가진 것이있다. <의 ContextMenu의 DataContext = "{바인딩 경우 ElementName =의 WinMain, 패스 =으로 myContextMenu}"에서 KeyDown = "KeyDown_Handler"의 keyup = "KeyUp_Handler">
Nop, 바인딩이 올바르지 않습니다. XAML 네임 스페이스 문제입니다. 적용되는 요소의 'ContextMenu' 속성에 의해 참조되는 객체는 윈도우의 네임 스페이스에 속하지 않습니다. 따라서'ElementName' 바인딩을 사용할 수 없으며 윈도우를 참조하게 할 수 없습니다. –
더 많은 설명 :'ContextMenu'는 어떤 논리적 또는 시각적 계층 구조에서도 예측할 수 없으므로'DataContext'를 상속하지도 않으며, 소위 '컨테이너'의 네임 스페이스의 일부가 아닙니다. , 적어도 사용자가 그것을 호출 할 때까지. 그렇게되면 DataContext는 자신의'DataContext' 속성에 할당 된 로컬 값을 가지지 않을 때만 컨테이너의'DataContext'로 설정됩니다. WPF가'DataContext'를 먼저 할당 한 다음 바인딩을 평가하는 것이지만, 나중에 –