feat: initialize dialog.
This commit is contained in:
20
src/Ursa/Controls/Dialog/DialogBox.cs
Normal file
20
src/Ursa/Controls/Dialog/DialogBox.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace Ursa.Controls;
|
||||
|
||||
public static class DialogBox
|
||||
{
|
||||
public static async Task ShowAsync()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public static async Task ShowAsync<TView, TViewModel>(TViewModel vm)
|
||||
where TView: Control, new()
|
||||
where TViewModel: new()
|
||||
{
|
||||
TView t = new TView();
|
||||
t.DataContext = vm;
|
||||
return;
|
||||
}
|
||||
}
|
||||
8
src/Ursa/Controls/Dialog/DialogControl.cs
Normal file
8
src/Ursa/Controls/Dialog/DialogControl.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace Ursa.Controls;
|
||||
|
||||
public class DialogControl: ContentControl
|
||||
{
|
||||
|
||||
}
|
||||
39
src/Ursa/Controls/Dialog/DialogHost.cs
Normal file
39
src/Ursa/Controls/Dialog/DialogHost.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Utilities;
|
||||
|
||||
namespace Ursa.Controls;
|
||||
|
||||
public class DialogHost: Canvas
|
||||
{
|
||||
private Point _lastPoint;
|
||||
|
||||
protected override void OnPointerMoved(PointerEventArgs e)
|
||||
{
|
||||
base.OnPointerMoved(e);
|
||||
if (e.Source is DialogControl item)
|
||||
{
|
||||
if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed)
|
||||
{
|
||||
var p = e.GetPosition(this);
|
||||
var left= p.X - _lastPoint.X;
|
||||
var top = p.Y - _lastPoint.Y;
|
||||
left = MathUtilities.Clamp(left, 0, Bounds.Width - item.Bounds.Width);
|
||||
top = MathUtilities.Clamp(top, 0, Bounds.Height - item.Bounds.Height);
|
||||
Canvas.SetLeft(item, left);
|
||||
Canvas.SetTop(item, top);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
||||
{
|
||||
base.OnPointerPressed(e);
|
||||
if (e.Source is DialogControl item)
|
||||
{
|
||||
_lastPoint = e.GetPosition(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
6
src/Ursa/Controls/Dialog/IDialogContext.cs
Normal file
6
src/Ursa/Controls/Dialog/IDialogContext.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Ursa.Controls;
|
||||
|
||||
public interface IDialogContext
|
||||
{
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user