2010-05-05 21 views
5

Chúng ta cần phải nhấp chuột và kéo "bị bỏ qua" bởi View1 của chúng tôi nhưng Mẹo ToolTip vẫn hoạt động trong chế độ xem đó. Lý do là View1 ở trên View2 trong Z-Order, vì vậy View1 có thể tô màu View2 một màu đỏ và hiển thị cảnh báo qua ToolTip; tuy nhiên ToolTip đi kèm View1 sẽ không hoạt động nếu IsHitTestVisible = "False".XAML ToolTip + IsHitTestVisible = "False"

Bất kỳ ai biết một công việc xung quanh để ToolTip sẽ hiển thị trên di chuyển chuột/hơn và phần còn lại của sự kiện chuột bị bỏ qua bởi View1 và đi đến View2?

Cảm ơn,

Sean

Trả lời

2

Tôi đã làm gì mà không phải là vĩ đại:

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

Đừng đặt các IsHitTestVisible="False"!

Chỉ cần thêm những dòng

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

IsEnable thay đổi kiểu của thành phần. –

2

Nếu ai đó đang phải đối mặt với cùng một vấn đề, họ có thể tìm thấy nó hữu ích. Chúng tôi đã có một yêu cầu để vô hiệu hóa vài hàng trên datagrid, nhưng đồng thời cho phép điều hướng phím mũi tên trên chúng. Đây là lý do tại sao chúng tôi phải chuyển sang IsHitTestVisible thay vì kiểm soát thuộc tính IsEnabled. Vì vậy, chúng tôi không thể áp dụng giải pháp chuyển đổi ở trên thành thuộc tính IsEnabled.

Đây là cách tôi giải quyết vấn đề này. Tôi đã tạo thuộc tính đính kèm mới RowEnable cho DataGridRow. Thuộc tính đính kèm này có thể được liên kết với thuộc tính viewmodel để kiểm soát kích hoạt và vô hiệu hóa virtual. Tôi cũng đã tạo kiểu mới cho DataGridCell nơi tôi đang đặt IsHitTestVisible thành false dựa trên cùng một thuộc tính chế độ xem. Vì vậy, hãy xem nó giống như một hàng mà chuột/bàn phím có thể nhìn thấy, nhưng không thể thấy các ô/cột của nó. Điều này có nghĩa là bây giờ tôi có thể tạo kiểu cho hàng dựa trên thuộc tính đính kèm mới RowEnabled để tắt/bật. Đồng thời, tôi có thể xem chú giải công cụ cho những tows này hầu như bị vô hiệu hóa.

Hy vọng điều này sẽ giúp ích !!

Các vấn đề liên quan