2013-03-23 35 views
7

Có cách nào để bật ToolTipService.ShowOnDisabled = true cho toàn bộ ứng dụng hoặc tôi có phải đặt nó cho mọi điều khiển trong ứng dụng WPF của mình theo cách thủ công không?Có thể bật ToolTipService.ShowOnDisabled = true cho toàn bộ ứng dụng

Tôi không nghĩ rằng việc tạo lại mọi điều khiển là một giải pháp tốt.

+0

Bạn luôn có thể tạo ra một phong cách cho 'FrameworkElement', sẽ không áp dụng cho tất cả các yếu tố trong cây thị giác? –

Trả lời

7

Bạn có thể ghi đè lên các siêu dữ liệu tài sản cho TooltipService.ShowOnDisabled và thiết lập giá trị mặc định của nó để true (by default value is false) và nó sẽ áp dụng cho tất cả các điều khiển trong ứng dụng của bạn.

Đặt mã này trong App.xaml.cs của bạn -

static App() 
    { 
     ToolTipService.ShowOnDisabledProperty.OverrideMetadata(typeof(Control), 
        new FrameworkPropertyMetadata(true)); 
    } 
+1

Ths hoạt động, một giải pháp tuyệt vời – sacha

0

Bạn có thể sử dụng VisualTreeHelper lớp (msdn) và phương pháp tĩnh ToolTipService.SetShowOnDisabled (msdn).

Tôi đã tạo lớp đơn giản để lặp qua tất cả các phần tử và đặt thuộc tính ShowOnDisabled thành True.

class ToolTipServiceHelper 
{  
    public void EnumVisual(Visual myVisual) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++) 
     { 
      Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);     
      ToolTipService.SetShowOnDisabled(childVisual, true); 
      EnumVisual(childVisual); 
     } 
    } 
} 

Ví dụ về sử dụng:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     ToolTipServiceHelper ttsh = new ToolTipServiceHelper(); 
     ttsh.EnumVisual(this.Content as Visual); 
    } 
} 
Các vấn đề liên quan