Avalonia使用默认弹窗

avalonia,使用,默认,弹窗 · 浏览次数 : 258

小编点评

**Window.axaml** ```xml ``` **UserControl.axaml** ```xml ``` **Demo.axaml** ```xml ``` **代码功能:** 1. 窗口使用默认弹窗显示信息。 2. 用户在组件中点击按钮时,显示错误提示信息。 3. Demo 用户控制组件中包含按钮,当按钮被点击时,显示错误提示信息。

正文

Avalonia使用默认弹窗

Avalonia中使用官方默认弹窗WindowNotificationManager

Views\MainWindow.axaml相关代码

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:ApplicationDemo.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="ApplicationDemo.Views.MainWindow"
        Icon="/Assets/avalonia-logo.ico"
        Title="ApplicationDemo">

    <Design.DataContext>
        <vm:MainWindowViewModel />
    </Design.DataContext>

    <Button Click="Button_OnClick">
        卧槽你别点我
    </Button>
</Window>

Views\MainWindow.axaml.cs相关代码

using Avalonia.Controls;
using Avalonia.Controls.Notifications;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;

namespace ApplicationDemo.Views;

public partial class MainWindow : Window
{
    private WindowNotificationManager? _manager;

    public MainWindow()
    {
        InitializeComponent();
    }

    protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
    {
        base.OnApplyTemplate(e);
        _manager = new WindowNotificationManager(this) { MaxItems = 3 };
    }

    private void Button_OnClick(object? sender, RoutedEventArgs e)
    {
        _manager?.Show(new Notification("错误", "账号或密码错误!", NotificationType.Error));
    }
}

效果如图

在组件中使用WindowNotificationManager

修改Views\MainWindow.axaml相关代码

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:ApplicationDemo.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:views="clr-namespace:ApplicationDemo.Views"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="ApplicationDemo.Views.MainWindow"
        Icon="/Assets/avalonia-logo.ico"
        Title="ApplicationDemo">

    <Design.DataContext>
        <vm:MainWindowViewModel />
    </Design.DataContext>
    <StackPanel>

        <views:Demo></views:Demo>
        <Button Click="Button_OnClick">
            卧槽你别点我
        </Button>
    </StackPanel>
</Window>

新增Demo的UserControl组件,修改Demo.axaml代码

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="ApplicationDemo.Views.Demo">
 <Button Click="Button_OnClick">组件点击按钮</Button>
</UserControl>

修改Demo.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Notifications;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;

namespace ApplicationDemo.Views;

public partial class Demo : UserControl
{
    
    private WindowNotificationManager? _manager;
    
    public Demo()
    {
        InitializeComponent();
    }
    
    protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
    {
        base.OnAttachedToVisualTree(e);
        var topLevel = TopLevel.GetTopLevel(this);
        _manager = new WindowNotificationManager(topLevel){ MaxItems = 3};
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }

    private void Button_OnClick(object? sender, RoutedEventArgs e)
    {
        _manager?.Show(new Notification("错误", "账号或密码错误!", NotificationType.Error));
    }
}

效果如图

与Avalonia使用默认弹窗相似的内容:

Avalonia使用默认弹窗

Avalonia使用默认弹窗 在Avalonia中使用官方默认弹窗WindowNotificationManager Views\MainWindow.axaml相关代码

Avalonia 使用EFCore调用SQLite实现Singleton全局注册

# Avalonia 使用EFCore调用SQLite实现Singleton全局注册 ![image-20230720204001797](https://www.raokun.top/upload/2023/07/image-20230720204001797.png) 本篇博客是我的开源项目[T

avalonia自定义弹窗

对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义 创建项目 实现我们需要创建一个avaloniaMVVM的项目模板 并且取名PopoverExample 然

Avalonia中的线性渐变画刷LinearGradientBrush

在WPF中使用Shape实现复杂线条动画后,尝试在Avalonia中也实现同样效果。尽管官方提供了从WPF到Avalonia的快速入门文档,但由于第一次使用Avalonia,体验过程中并不是很顺利,主要是卡在线性渐变画刷LinearGradientBrush的使用上。Avalonia中的线性渐变画刷

Avalonia项目打包安装包

# Avalonia项目打包安装包 要将 Avalonia 项目打包成安装包,你可以使用 Avalonia 发布工具来完成 # 1.创建一个发布配置文件 在你的 Avalonia 项目中,创建一个发布配置文件。在项目文件夹中创建一个名为 `publish.xml` 的文件,并添加以下内容: ```x

一个跨平台的`ChatGPT`悬浮窗工具

# 一个跨平台的`ChatGPT`悬浮窗工具 使用`avalonia`实现的`ChatGPT`的工具,设计成悬浮窗,并且支持插件。 ## 如何实现悬浮窗? 在使用`avalonia`实现悬浮窗也是非常的简单的。 实现我们需要将窗体设置成无边框 在`Window`根节点添加一下属性,想要在Linux下

创建Avalonia 模板项目-基础

# 创建Avalonia 模板项目-基础 Avalonia是一个跨平台的.NET框架,用于构建漂亮、现代的图形用户界面(GUI)。使用Avalonia,您可以从单个代码库创建适用于Windows、macOS、 Linux、iOS、Android和Web Assembly的原生应用程序。 本文部分内容

Avalonia 实现动态托盘

先下载一个gif图片,这里提供一个gif图片示例 在线GIF图片帧拆分工具 - UU在线工具 (uutool.cn) 使用这个网站将gif切成单张图片 创建一个Avalonia MVVM的项目,将图片copy进去 在项目文件中添加一下代码:

WPF跨平台方案?

Avalonia XPF 通过我们的跨平台UI框架,释放现有WPF应用程序的全部潜力,使WPF应用程序能够在macOS和Linux上运行,而不需要昂贵和有风险的重写。 工作原理 我们使用 Fork of WPF 使 WPF 应用程序能够在 macOS 和 Linux 上运行,这使我们能够保持 API

跨平台`ChatGpt` 客户端

跨平台ChatGpt 客户端 一款基于Avalonia实现的跨平台ChatGpt客户端 ,通过对接ChatGpt官方提供的ChatGpt 3.5模型实现聊天对话 实现创建ChatGpt的项目名称 ,项目类型是Avalonia MVVM , 添加项目需要使用的Nuget包