feat: allow setting titlebar hittest from UrsaWindow.

This commit is contained in:
Dong Bin
2025-03-20 16:53:42 +08:00
parent fac49a660e
commit 917217eb2d
2 changed files with 13 additions and 1 deletions

View File

@@ -66,6 +66,7 @@
<VisualLayerManager.ChromeOverlayLayer>
<Panel Margin="{Binding $parent[u:UrsaWindow].OffScreenMargin}">
<u:TitleBar
IsTitleBarHitTestVisible="{Binding $parent[u:UrsaWindow].(u:TitleBar.IsTitleBarHitTestVisible)}"
Margin="{Binding $parent[u:UrsaWindow].TitleBarMargin}"
Content="{Binding $parent[u:UrsaWindow].TitleBarContent}"
IsTitleVisible="{Binding $parent[u:UrsaWindow].IsTitleBarVisible}"
@@ -109,7 +110,7 @@
<Border
Name="PART_Background"
Background="{TemplateBinding Background}"
IsHitTestVisible="True" />
IsHitTestVisible="{TemplateBinding IsTitleBarHitTestVisible}" />
<Grid HorizontalAlignment="Stretch" ColumnDefinitions="Auto, *, Auto, Auto">
<ContentPresenter
Grid.Column="0"

View File

@@ -42,6 +42,17 @@ public class TitleBar: ContentControl
get => GetValue(IsTitleVisibleProperty);
set => SetValue(IsTitleVisibleProperty, value);
}
public static readonly AttachedProperty<bool> IsTitleBarHitTestVisibleProperty =
AvaloniaProperty.RegisterAttached<TitleBar, Window, bool>("IsTitleBarHitTestVisible", defaultValue: true);
public static void SetIsTitleBarHitTestVisible(Window obj, bool value) => obj.SetValue(IsTitleBarHitTestVisibleProperty, value);
public static bool GetIsTitleBarHitTestVisible(Window obj) => obj.GetValue(IsTitleBarHitTestVisibleProperty);
public bool IsTitleBarHitTestVisible
{
get => GetValue(IsTitleBarHitTestVisibleProperty);
set => SetValue(IsTitleBarHitTestVisibleProperty, value);
}
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{