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

View File

@@ -43,6 +43,17 @@ public class TitleBar: ContentControl
set => SetValue(IsTitleVisibleProperty, value); 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) protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{ {
base.OnApplyTemplate(e); base.OnApplyTemplate(e);