2010-05-05 6 views
5

우리는 View1에서 마우스 클릭과 드래그를 "무시"해야하지만 도구 설명은 여전히 ​​해당보기에서 작동해야합니다. View1이 View2보다 Z-Order에서 위에 있기 때문에 View1은 View2에 빨간색을 틴트로 표시하고 ToolTip을 통해 경고를 표시 할 수 있습니다. 그러나 IsHitTestVisible = "False"이면 View1에 포함 된 도구 설명이 작동하지 않습니다.XAML ToolTip + IsHitTestVisible = "False"

사람이 알기 때문에 툴팁이 마우스 이동/이상시 표시되고 나머지 마우스 이벤트는 View1에서 무시되고 View2로 이동합니까? 내가 무슨 짓을

감사합니다,

답변

2

큰되지 않습니다 :

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     var parentWindow = Window.GetWindow(this); 
     var source = PresentationSource.FromVisual(parentWindow) as HwndSource; 

     source.AddHook(WndProc); 
    } 

    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
    { 
     // Handle messages... 
     if (msg == WM_MOUSEMOVE) 
     { 
     ...show tool tip if mouse is over it 
     } 
     return IntPtr.Zero; 
    } 
0

IsHitTestVisible="False"을 설정하지 마십시오!

그냥 다른 사람이 같은 문제에 직면하는 경우, 그들은이 도움이 될 수있는 그 라인을

IsEnable = false 
ToolTipService.ShowOnDisabled="True" 
+3

IsEnable은 구성 요소의 스타일을 변경합니다. –

2

를 추가합니다. DataGrid에서 행을 거의 사용하지 않도록 설정해야하지만 동시에 화살표 키를 사용할 수 있습니다. 따라서 IsEnabled 속성을 제어하는 ​​대신 IsHitTestVisible으로 전환해야했습니다. 따라서 위의 IsEnabled 속성으로 전환하는 솔루션을 채택 할 수 없습니다.

다음은이 문제를 해결하는 방법입니다. DataGridRow에 대해 새 연결 속성 RowEnable을 만들었습니다. 이 연결된 속성은 virtual 활성화 및 비활성화를 제어하기 위해 viewmodel 속성에 바인딩 될 수 있습니다. 또한 DataGridCell에 대한 새 스타일을 만들었습니다. IsHitTestVisible to false 같은 viewmodel 속성을 기반으로합니다. 따라서 마우스/키보드에서 볼 수는 있지만 셀/열은 볼 수없는 행과 같습니다. 즉, 새 첨부 속성 RowEnabled을 기반으로 행의 스타일을 지정/해제 할 수 있습니다. 동시에, 나는 사실상 무력화 된이 견인물에 대한보기 툴팁을 볼 수 있습니다.

희망이 도움이됩니다!

관련 문제