Avalonia 常用控件三 Window窗体相关二

news2024/11/20 10:31:00

1、效果演示

2、在Views中创建WindowDemo.axaml如下图

WindowDemo.axaml代码如下

<Window 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="200" d:DesignHeight="200"
        Width="200"
        Height="200"
        x:Class="AvaloniaStepByStepLearning.WindowDemo"
        WindowStartupLocation="CenterOwner"
        Title="WindowDemo">

    <Button x:Name="btnClose" Click="BtnClose_OnClick" HorizontalAlignment="Center" VerticalAlignment="Center" Content="关闭窗口"/>
</Window>

 WindowDemo.axaml.cs代码如下:

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

namespace AvaloniaStepByStepLearning;

public partial class WindowDemo : Window
{
    public WindowDemo()
    {
        InitializeComponent();
    }

    private void BtnClose_OnClick(object? sender, RoutedEventArgs e)
    {
        Close("返回的数据");
    }
}

3、示例代码步骤

3.1、MainView.axaml添加代码如下

		<Button HorizontalAlignment="Center" Content="Menu/菜单">
			<Button.Flyout>
				<MenuFlyout>
					<MenuItem x:Name="MItOpen" Header="打开" Click="MenuItem_OnClick"/>
					<MenuItem Header="-"/>
					<MenuItem x:Name="MItClose" Header="关闭" Click="MenuItem_OnClick"/>
                    <MenuItem Header="-"/>
                    <MenuItem x:Name="MItHideAndShow" Header="隐藏/显示" Click="MenuItem_OnClick"/>
                    
				</MenuFlyout>
			</Button.Flyout>
		</Button>

        <Button x:Name="btnGetString" HorizontalAlignment="Center" Content="MenuDialog" Margin="0 15 0 0">
            <Button.Flyout>
                <MenuFlyout>
                    <MenuItem x:Name="MItOpenDialog" Header="打开无返回值" Click="MenuItem_OnClick"/>
                    <MenuItem x:Name="MItOpenGetDialog" Header="打开获取返回值" Click="MenuItem_OnClick"/>
					<MenuItem Header="-"/>
                    <MenuItem x:Name="MItCloseDialog" Header="关闭" Click="MenuItem_OnClick"/>
                </MenuFlyout>
            </Button.Flyout>
        </Button>

3.2、MainView.axaml.cs添加代码如下

    public Window currenWindow
    {
        get
        {
            return GetParentWindow();
        }
    }

    public Window GetParentWindow()
    {
        if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            return desktop.MainWindow;
        }
        else
        {
            return null;
        }
    }

    private WindowDemo _windowDemo;
    private async void MenuItem_OnClick(object? sender, RoutedEventArgs e)
    {
        MenuItem _menuItem = (MenuItem)sender;

        switch (_menuItem.Name)
        {
            case "MItOpen":
                _windowDemo = new WindowDemo();
                _windowDemo.Show();
                break;
            case "MItClose":
                _windowDemo.Close();
                _windowDemo = null;
                break;
            case "MItHideAndShow":
                if (_windowDemo==null)
                {
                    _windowDemo = new WindowDemo();
                }
                _windowDemo.Hide();
                Thread.Sleep(3000);
                _windowDemo.Show();
                break;
            case "MItOpenDialog":
                if (_windowDemo!=null)
                {
                    _windowDemo.Close();
                    _windowDemo = null;
                }
                _windowDemo = new WindowDemo();
                await _windowDemo.ShowDialog(currenWindow);
                break;
            case "MItOpenGetDialog":
                _windowDemo = new WindowDemo();
                var str=await _windowDemo.ShowDialog<string>(currenWindow);
                btnGetString.Content = str;
                Debug.WriteLine(str);
                break;
            case "MItCloseDialog":
                if (_windowDemo!=null)
                {
                    _windowDemo.Close();
                    _windowDemo = null;
                }
                break;
            default:
                break;
        }
    }

3.3、Avalonia 获取MainWindow.axaml 代码如下

    public Window currenWindow
    {
        get
        {
            return GetParentWindow();
        }
    }

    public Window GetParentWindow()
    {
        if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            return desktop.MainWindow;
        }
        else
        {
            return null;
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1881771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++题解】1228. 排队打水问题

问题&#xff1a;1228. 排队打水问题 类型&#xff1a;贪心 题目描述&#xff1a; 有 n 个人排队到r 个水龙头去打水&#xff0c;他们装满水桶的时间 t1​,t2​,…,tn​ 为整数且各不相等&#xff0c;应如何安排他们的打水顺序才能使他们花费的总时间最少&#xff1f; 每个人…

嵌入式UI开发-lvgl+wsl2+vscode系列:8、控件(Widgets)(一)

一、前言 这里将介绍一系列控件&#xff0c;了解后就可以开始基础的开发了。 二、示例 1、Base Obj&#xff08;基础对象&#xff09; 1.1、示例1 #include "../../lv_examples.h" #if LV_BUILD_EXAMPLESvoid lv_example_obj_1(void) {lv_obj_t * obj1;obj1 lv…

Swift 新结构化并发中鲜为人知的 isolated 参数

概述 伴随着 Swift 5.5&#xff08;WWDC21&#xff09;推出的新结构化并发到今年的 WWDC 24 已经有 3 个多年头了。想必大家都对其中 async/awiat、async let、TaskGroup、Actor 等各种概念都了然于胸了吧&#xff1f; 不过小伙伴们可能不知道的是&#xff1a;新结构化并发&a…

零基础STM32单片机编程入门(五)FreeRTOS实时操作系统详解及实战含源码视频

文章目录 一.概要二.什么是实时操作系统三.FreeRTOS的特性四.FreeRTOS的任务详解1.任务函数定义2.任务的创建3.任务的调度原理 五.CubeMX配置一个FreeRTOS例程1.硬件准备2.创建工程3.调试FreeRTOS任务调度 六.CubeMX工程源代码下载七.讲解视频链接地址八.小结 一.概要 FreeRTO…

世界羽坛失去了一位天才选手:如何预防运动场上发生意外

世界羽坛失去了一位天才选手&#xff1a;如何预防运动场上发生意外 --中国羽毛球新星张志杰赛场突发意外&#xff0c;年仅17岁离世 中国羽毛球界的一颗新星、年仅17岁的张志杰&#xff0c;在印尼举行的2024亚洲青年羽毛球锦标赛中不幸离世。这位出生于嘉兴的天才选手&#xf…

北京酒店订房小程序开发的优势与主要功能

随着我国经济与交通的飞速发展&#xff0c;人们出行的次数越来越多&#xff0c;频率也越来越快。无论是出差还是出游&#xff0c;人家对外出酒店的舒适度与便捷度的要求也越来越高。为了满足人们对于酒店的新需求&#xff0c;北京酒店订房小程序与互联网技术相结合&#xff0c;…

经典文献阅读之--BALM2(高效且一致的激光雷达点云束调整)

0. 简介 束调整&#xff08;Bundle Adjustment&#xff0c;BA&#xff09;是指同时确定传感器姿态和场景几何的问题&#xff0c;这是机器人视觉中的一个基本问题。本文提出了一种高效且一致的激光雷达束调整方法。该方法利用边缘和平面特征来表示场景几何&#xff0c;并直接最…

制定全面测试计划:使用TS-GNSS模拟器助力接收器选择

GPS/GNSS信号无处不在&#xff0c;也是目前定位导航应用中最为关键的一环&#xff0c;而GNSS接收器芯片组的低成本和高性能使得将GNSS接收器更容易得集成到以前从未有过的产品中去。由于存在以多种频率传输信号的多个GNSS星座&#xff0c;以及用于提高GNSS精度的各种可用技术&a…

并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化

一、引言 1、数据库管理系统DBMS的事务处理技术实现的另一个主要功能部分是并发控制机制。并发控制机制完成的功能就是对并发执行的事务进行控制&#xff0c;保证事务的隔离性&#xff0c;从而进一步保持数据库的一致性。 2、事务的并发控制就是对并发执行的不同事务中的数据…

NLP特征提取的惊人历史演变

NLP特征提取的惊人演变 1.理解特征提取2. 文本表示的演变2.1.词袋的简单性2.2. N-Gram 模型的进步2.3. TF-IDF 的崛起 3. 深入研究词嵌入3.1.探索 Word2Vec3.2.深入了解 GloVe3.3.深入研究 FastText 4. 上下文嵌入的影响4.1 ELMo 的突破4.2 理解 BERT 的机制4.3 Transformer的出…

MySQL-核心知识要点

1、索引的数据结构-Btree BTree的优势&#xff1a; B树的内节点无data&#xff0c;一个节点可以存储更多的K-V对。在构造树时&#xff0c;需要的内节点会更少&#xff0c;那么树的层级也会越低。查询一条数据时&#xff0c;1. 扫描的层级低&#xff0c;扫描过的节点更少&…

Java使用Tessdata做OCR图片文字识别【搬代码】

下载tessdata各语言集合包.zip 找个盘下面解压缩&#xff0c;名字改成英文的 pom文件依赖 <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></dependency>j…

第二天:ALOAM前端讲解【第2部分】

三、scan2scan 3. 帧间匹配 特征关联与损失函数计算 (1)线特征 点到线的距离公式: d ϵ = ∣ ( X ~ ( k +

高温电子设备对设计和可靠性带来挑战

1 高温应用 地下石油和天然气行业&#xff0c;温度&#xff1e;150℃&#xff0c;最高温度可达200℃。 地下钻探作业 地下钻探时&#xff0c;需要收集周围的地质构造&#xff0c;可通过测量电阻率、放射性、声音传播时间、磁共振和其他属性&#xff0c;同时还会监控压力、温度、…

[go-zero] goctl 生成api和rpc

文章目录 1.goctl 概述2.go-zero 需要安装的组件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多种rpc&#xff0c;较为流行的是google开源的grpc&#xff0c;这里主要介绍goctl rpc protoc的代码生成与使用。protoc是grpc的命令&#xff0c;作用是将proto buffer文件转化为相…

2024.07使用gradle上传maven组件到central.sonatype,非常简单

本文基于sonatypeUploader2.0版本 在1.0版本我们还需要手动去添加maven-publish和signing插件&#xff0c;在2.0版本他已经内置了&#xff0c;如果你仍然需要手动配置&#xff0c;你可以手动添加这两个插件及逻辑。 具体信息参考开源仓库&#xff1a; 插件仓库&#xff1a;h…

GPT-5:博士级智能的破晓,人工智能的新里程碑

随着科技的飞速发展&#xff0c;人工智能领域再次迎来了一场革命性的突破。备受瞩目的新一代大语言模型GPT-5即将在一年半之后发布&#xff0c;这一创新不仅将再次刷新人们对人工智能的认知&#xff0c;更有可能在多个领域展现出超越人类博士级智能的卓越能力。本文将对GPT-5的…

一体化导航的优点及应用领域

一体化导航&#xff0c;作为现代导航技术的重要发展方向&#xff0c;正日益展现出其独特的魅力和广泛的应用前景。这种导航方式将多种导航技术、信息系统以及数据处理方法集成于一个统一的平台上&#xff0c;为用户提供高效、准确、便捷的导航服务。 一体化导航的核心在于其高度…

【Python】从基础到进阶(二):了解Python语言基础以及数据类型转换、基础输入输出

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、基本数据类型转换1. 隐式转换2. 显式转换 三、基本输入输出1. 输入&#xff08;input&#xff09;2. 输出&#xff08;print&#xff09;3. 案例&#xff1a;输入姓名、年龄、身高以及体重&#xff0c;计算BMI指…

onnx文件QNN部署

一、准备环境 1.linux配置qnn sdk &#xff08;1&#xff09;下载qnn sdk https://qpm.qualcomm.com/#/main/tools/details/qualcomm_ai_engine_direct &#xff08;2&#xff09;下载qpm3 https://softwarecenter.qualcomm.com/#/catalog/item/3097f479-8993-11ea-9571-06…