Avalonia使用默认弹窗

简介: Avalonia使用默认弹窗

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));
    }
}

效果如图

目录
相关文章
|
6月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
721 0
|
C# 数据安全/隐私保护
【WPF】右下角弹出自定义通知样式(Notification)——简单教程
原文:【WPF】右下角弹出自定义通知样式(Notification)——简单教程 1.先看效果 2.实现 1.主界面是MainWindow 上面就只摆放一个Button即可。
3051 0
|
5月前
|
前端开发
Wordpress自定义鼠标样式插件
使用此插件可一键自定义Wordpress前端鼠标指针样式。利用该插件,站长可以快速实现替换多种鼠标指针样式于网站前端。,该插件允许用户一键自定义网站前端的鼠标指针样式,提供多种图案选择。插件资源来源于网络并已开源,无商业性质。包含插件截图和使用教程:用户可从蓝奏云或GitHub下载插件zip文件,然后在WordPress中安装。
113 6
|
6月前
|
JavaScript
【UI】 cocomessage消息提示插件
【UI】 cocomessage消息提示插件
88 1
avalonia自定义弹窗
avalonia自定义弹窗
326 0
|
Web App开发
Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
984 0
Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
|
前端开发 容器 开发工具
[uwp]自定义Behavior之随意拖动
原文:[uwp]自定义Behavior之随意拖动   由于最近有需求,所以自定义了一个随意拖动元素的Behavior.   当然在使用这个自定义的Behavior时,有个小假设:拖动元素必须是Canvas容器的子元素。
829 0
|
C# Windows
WPF 设置类库项目为启动项,设置窗体跟随。
原文:WPF 设置类库项目为启动项,设置窗体跟随。 1、添加用于启动的类Program.cs,需要一个静态的Main函数入口。
1031 0
|
图形学
Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮可用
Override Dropdown Component 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
2709 0