feat: simplify name, set to center by default.
This commit is contained in:
@@ -33,7 +33,9 @@
|
|||||||
Command="{Binding ShowLocalOverlayModalDialogCommand}">
|
Command="{Binding ShowLocalOverlayModalDialogCommand}">
|
||||||
Show Local Overlay Dialog
|
Show Local Overlay Dialog
|
||||||
</Button>
|
</Button>
|
||||||
<u:OverlayDialogHost HostId="LocalHost" />
|
<Border CornerRadius="20" ClipToBounds="True">
|
||||||
|
<u:OverlayDialogHost HostId="LocalHost" />
|
||||||
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public static class OverlayDialog
|
|||||||
Content = new TView(){ DataContext = vm },
|
Content = new TView(){ DataContext = vm },
|
||||||
DataContext = vm,
|
DataContext = vm,
|
||||||
};
|
};
|
||||||
var host = OverlayDialogManager.GetOverlayDialogHost(hostId);
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
host?.AddModalDialog(t);
|
host?.AddModalDialog(t);
|
||||||
return t.ShowAsync<TResult>();
|
return t.ShowAsync<TResult>();
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ public static class OverlayDialog
|
|||||||
ExtendToClientArea = options.ExtendToClientArea,
|
ExtendToClientArea = options.ExtendToClientArea,
|
||||||
Title = options.Title,
|
Title = options.Title,
|
||||||
};
|
};
|
||||||
var host = OverlayDialogManager.GetOverlayDialogHost(hostId);
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
host?.AddModalDialog(t);
|
host?.AddModalDialog(t);
|
||||||
return t.ShowAsync<TResult>();
|
return t.ShowAsync<TResult>();
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@ public static class OverlayDialog
|
|||||||
Content = new TView() { DataContext = vm },
|
Content = new TView() { DataContext = vm },
|
||||||
DataContext = vm,
|
DataContext = vm,
|
||||||
};
|
};
|
||||||
var host = OverlayDialogManager.GetOverlayDialogHost(hostId);
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
host?.AddDialog(t);
|
host?.AddDialog(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ public static class OverlayDialog
|
|||||||
ExtendToClientArea = options.ExtendToClientArea,
|
ExtendToClientArea = options.ExtendToClientArea,
|
||||||
Title = options.Title,
|
Title = options.Title,
|
||||||
};
|
};
|
||||||
var host = OverlayDialogManager.GetOverlayDialogHost(hostId);
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
host?.AddModalDialog(t);
|
host?.AddModalDialog(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Layout;
|
using Avalonia.Layout;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
@@ -40,7 +41,7 @@ public class OverlayDialogHost : Canvas
|
|||||||
protected sealed override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
protected sealed override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnAttachedToVisualTree(e);
|
base.OnAttachedToVisualTree(e);
|
||||||
OverlayDialogManager.RegisterOverlayDialogHost(this, HostId);
|
OverlayDialogManager.RegisterHost(this, HostId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected sealed override void OnSizeChanged(SizeChangedEventArgs e)
|
protected sealed override void OnSizeChanged(SizeChangedEventArgs e)
|
||||||
@@ -55,7 +56,7 @@ public class OverlayDialogHost : Canvas
|
|||||||
|
|
||||||
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
|
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
|
||||||
{
|
{
|
||||||
OverlayDialogManager.UnregisterOverlayDialogHost(HostId);
|
OverlayDialogManager.UnregisterHost(HostId);
|
||||||
base.OnDetachedFromVisualTree(e);
|
base.OnDetachedFromVisualTree(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,6 +91,9 @@ public class OverlayDialogHost : Canvas
|
|||||||
{
|
{
|
||||||
this.Children.Add(control);
|
this.Children.Add(control);
|
||||||
_dialogs.Add(control);
|
_dialogs.Add(control);
|
||||||
|
control.Measure(this.Bounds.Size);
|
||||||
|
control.Arrange(new Rect(control.DesiredSize));
|
||||||
|
SetToCenter(control);
|
||||||
control.OnClose += OnDialogClose;
|
control.OnClose += OnDialogClose;
|
||||||
control.OnLayerChange += OnDialogLayerChange;
|
control.OnLayerChange += OnDialogLayerChange;
|
||||||
ResetZIndices();
|
ResetZIndices();
|
||||||
@@ -140,6 +144,9 @@ public class OverlayDialogHost : Canvas
|
|||||||
ResetZIndices();
|
ResetZIndices();
|
||||||
this.Children.Add(mask);
|
this.Children.Add(mask);
|
||||||
this.Children.Add(control);
|
this.Children.Add(control);
|
||||||
|
control.Measure(this.Bounds.Size);
|
||||||
|
control.Arrange(new Rect(control.DesiredSize));
|
||||||
|
SetToCenter(control);
|
||||||
control.OnClose += OnDialogClose;
|
control.OnClose += OnDialogClose;
|
||||||
control.OnLayerChange += OnDialogLayerChange;
|
control.OnLayerChange += OnDialogLayerChange;
|
||||||
}
|
}
|
||||||
@@ -200,4 +207,16 @@ public class OverlayDialogHost : Canvas
|
|||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetToCenter(DialogControl? control)
|
||||||
|
{
|
||||||
|
// return;
|
||||||
|
if (control is null) return;
|
||||||
|
double left = (this.Bounds.Width - control.Bounds.Width) / 2;
|
||||||
|
double top = (this.Bounds.Height - control.Bounds.Height) / 2;
|
||||||
|
left = MathUtilities.Clamp(left, 0, Bounds.Width);
|
||||||
|
top = MathUtilities.Clamp(top, 0, Bounds.Height);
|
||||||
|
Canvas.SetLeft(control, left);
|
||||||
|
Canvas.SetTop(control, top);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ internal static class OverlayDialogManager
|
|||||||
private static OverlayDialogHost? _defaultHost;
|
private static OverlayDialogHost? _defaultHost;
|
||||||
private static readonly ConcurrentDictionary<string, OverlayDialogHost> Hosts = new();
|
private static readonly ConcurrentDictionary<string, OverlayDialogHost> Hosts = new();
|
||||||
|
|
||||||
public static void RegisterOverlayDialogHost(OverlayDialogHost host, string? id)
|
public static void RegisterHost(OverlayDialogHost host, string? id)
|
||||||
{
|
{
|
||||||
if (id == null)
|
if (id == null)
|
||||||
{
|
{
|
||||||
@@ -21,7 +21,7 @@ internal static class OverlayDialogManager
|
|||||||
Hosts.TryAdd(id, host);
|
Hosts.TryAdd(id, host);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UnregisterOverlayDialogHost(string? id)
|
public static void UnregisterHost(string? id)
|
||||||
{
|
{
|
||||||
if (id is null)
|
if (id is null)
|
||||||
{
|
{
|
||||||
@@ -31,7 +31,7 @@ internal static class OverlayDialogManager
|
|||||||
Hosts.TryRemove(id, out _);
|
Hosts.TryRemove(id, out _);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OverlayDialogHost? GetOverlayDialogHost(string? id)
|
public static OverlayDialogHost? GetHost(string? id)
|
||||||
{
|
{
|
||||||
if (id is null)
|
if (id is null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user