Просмотр исходного кода

fix: ModernTooltipService 的 ShowOnDisabled 兼容

龙腾猫跃 4 месяцев назад
Родитель
Сommit
c3fd315d89
1 измененных файлов с 7 добавлено и 0 удалено
  1. 7 0
      Wpf/Controls/ModernTooltipService.cs

+ 7 - 0
Wpf/Controls/ModernTooltipService.cs

@@ -118,6 +118,7 @@ public static class ModernTooltipService {
 
         // 长按、拖选时鼠标会短暂离开元素边界;此时收回 Tooltip 会造成明显闪烁。
         if (IsAnyMouseButtonPressed()) return;
+        if (!owner.IsEnabled && ToolTipService.GetShowOnDisabled(owner) && IsPointInside(owner, Mouse.GetPosition(owner))) return;
 
         var nextOwner = FindCurrentTooltipOwner(owner);
         if (nextOwner is not null && !ReferenceEquals(nextOwner, owner)) {
@@ -168,6 +169,12 @@ public static class ModernTooltipService {
 
     private static void RefreshCurrentOwner(FrameworkElement reference) {
         var owner = FindCurrentTooltipOwner(reference);
+        if (currentOwner is { IsEnabled: false } disabledOwner &&
+            ToolTipService.GetShowOnDisabled(disabledOwner) &&
+            IsPointInside(disabledOwner, Mouse.GetPosition(disabledOwner))) {
+            return;
+        }
+
         if (ShouldSuppressTooltip(owner)) {
             // 鼠标捕获仍在当前拥有者分支内时,保留现有气泡,避免拖选或按压时闪烁。
             if (currentOwner is not null &&