2010-05-28 7 views
0

콘트롤 키가 눌려 졌는지 여부에 따라 헤더를 변경하고자하는 컨텍스트 메뉴가 있습니다. 지금 내가 가지고있는WPF 바인딩 질문 - 한정자 키 컨트롤을 기반으로 레이블 텍스트 변경

<MenuItem Header="Send To"> 
    <MenuItem ... /> 
    <MenuItem ... /> 
</MenuItem> 
내가 할 수 아래 인 컨트롤 키를 기반으로 좋아 것

,

<MenuItem Header="Move To"> 
    <MenuItem ... /> 
    <MenuItem ... /> 
</MenuItem> 

정말 할 필요가 있기 때문에, 헤더 텍스트를 변경입니다 코드 내에서 수정 자 키가 컨트롤인지 확인하는 방법을 알고 있습니다.

답변

0

뷰어 모델의 일부 속성에 Header을 바인딩하고 수정 자 키를 누르면 알림이 변경됩니다.

+0

이 Aviad를 사용해 보았지만 제대로 작동하지 않는 것 같습니다. 응용 프로그램의 제목을 업데이트 할 수 있으며, 컨트롤을 아래/위로 움직여 앞뒤로 전환 할 수 있습니다. 그러나 컨텍스트 메뉴의 머리글은 변경되지 않습니다. 실제로는 비어 있습니다. 여기에 내가 가진 것이있다. <의 ContextMenu의 DataContext = "{바인딩 경우 ElementName =의 WinMain, 패스 =으로 myContextMenu}"에서 KeyDown = "KeyDown_Handler"의 keyup = "KeyUp_Handler"> 을 .. myContextMenu는 SendTo 속성에 대한 에코의 속성 변경 이벤트입니다. 바인딩이 올바르게 코딩 되었습니까? –

+0

Nop, 바인딩이 올바르지 않습니다. XAML 네임 스페이스 문제입니다. 적용되는 요소의 'ContextMenu' 속성에 의해 참조되는 객체는 윈도우의 네임 스페이스에 속하지 않습니다. 따라서'ElementName' 바인딩을 사용할 수 없으며 윈도우를 참조하게 할 수 없습니다. –

+0

더 많은 설명 :'ContextMenu'는 어떤 논리적 또는 시각적 계층 구조에서도 예측할 수 없으므로'DataContext'를 상속하지도 않으며, 소위 '컨테이너'의 네임 스페이스의 일부가 아닙니다. , 적어도 사용자가 그것을 호출 할 때까지. 그렇게되면 DataContext는 자신의'DataContext' 속성에 할당 된 로컬 값을 가지지 않을 때만 컨테이너의'DataContext'로 설정됩니다. WPF가'DataContext'를 먼저 할당 한 다음 바인딩을 평가하는 것이지만, 나중에 –