admin管理员组

文章数量:1033383

Avalonia UI 实现无边框窗口拖动

在 Avalnia 中的 Window 对象有一个名为 ExtendClientAreaChromeHints 的属性。设置该属性为 NoChrome 且 ExtendClientAreaToDecorationsHint为 True 之后,包含最大化、最小化按钮在内的系统标题栏就消失了。

另一个取消掉标题栏的方式是:设置窗体的 SystemDecorations 为 None 。

因为少了标题栏,所以就需要额外的代码实现拖动功能。

代码语言:javascript代码运行次数:0运行复制
private void Element_OnPointerPressed(object? sender, PointerPressedEventArgs e)
{
    if (e.Pointer.Type == PointerType.Mouse) this.BeginMoveDrag(e);
}

只需要将任意元素的 PointerPressed 事件增加以上事件处理器即可在该元素上实现无边框拖动。

如果代码没有效果,可以先尝试设置一下元素的背景色为红色后再尝试。

Avalonia UI 实现无边框窗口拖动

在 Avalnia 中的 Window 对象有一个名为 ExtendClientAreaChromeHints 的属性。设置该属性为 NoChrome 且 ExtendClientAreaToDecorationsHint为 True 之后,包含最大化、最小化按钮在内的系统标题栏就消失了。

另一个取消掉标题栏的方式是:设置窗体的 SystemDecorations 为 None 。

因为少了标题栏,所以就需要额外的代码实现拖动功能。

代码语言:javascript代码运行次数:0运行复制
private void Element_OnPointerPressed(object? sender, PointerPressedEventArgs e)
{
    if (e.Pointer.Type == PointerType.Mouse) this.BeginMoveDrag(e);
}

只需要将任意元素的 PointerPressed 事件增加以上事件处理器即可在该元素上实现无边框拖动。

如果代码没有效果,可以先尝试设置一下元素的背景色为红色后再尝试。

本文标签: Avalonia UI 实现无边框窗口拖动