Avalonia常用小控件Popup

news/2025/2/19 16:02:04/
1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo
2.UI库Semi.Avalonia,项目地址  https://github.com/irihitech/Semi.Avalonia
样式预览:

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"xmlns:model="clr-namespace:AvaloniaDemo.Models"mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"x:Class="AvaloniaDemo.Pages.Popup"><Grid VerticalAlignment="Top"><TextBox Grid.Column="1" Watermark="点一下"  x:Name="singleHeader" Width="200" Height="40"  BorderThickness="0 0 0 1"/><Popup Grid.Column="1" x:Name="singlePopup" MinHeight="200" IsOpen="False" PlacementTarget="singleHeader" Placement="BottomEdgeAlignedLeft"  ><TreeView x:Name="TreeV" Width="350" x:DataType="model:TreeModel"    SelectionChanged="singleTree_SelectedItemChanged" Background="{DynamicResource ComboBoxBackground}"><TreeView.ItemTemplate><TreeDataTemplate  ItemsSource="{Binding Nodes}" x:DataType="model:TreeModel"><TextBlock Text="{Binding Name}"></TextBlock></TreeDataTemplate></TreeView.ItemTemplate></TreeView></Popup></Grid>
</UserControl>

后台代码:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using AvaloniaDemo.Models;
using System.Collections.Generic;
using System.Collections.ObjectModel;namespace AvaloniaDemo.Pages;public partial class Popup : UserControl
{public ObservableCollection<TreeModel> trees { get; set; } = new ObservableCollection<TreeModel>{new TreeModel(){Name = "1",Nodes = new ObservableCollection<TreeModel>{new TreeModel() { Name="1.1",},new TreeModel() { Name="1.2",}}},new TreeModel(){Name = "2",Nodes = new ObservableCollection<TreeModel>{new TreeModel() { Name="2.1",},new TreeModel() { Name="2.2" },}}};public Popup(){InitializeComponent();singleHeader.AddHandler(Button.GotFocusEvent, singleHeaderClick);TreeV.ItemsSource = trees;DataContext = this;}/// <summary>/// 点击事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void singleHeaderClick(object? sender, RoutedEventArgs e){singlePopup.IsOpen = true;singlePopup.Open();}/// <summary>/// 树节点选中改变事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void singleTree_SelectedItemChanged(object sender, SelectionChangedEventArgs e){var trv = sender as TreeView;var trvItem = trv.SelectedItem as TreeModel;if (trvItem == null) return;singleHeader.Text = trvItem.Name.ToString();singlePopup.IsOpen = false;singlePopup.Close();}
}


http://www.ppmy.cn/news/1150000.html

相关文章

【pycharm】sqlite3:Driver class ‘org.sqlite.JDBC‘ not found

pycharm 连接sqlite3的时候&#xff0c;点击&#xff1a;Test Connection 提示&#xff1a;Driver class ‘org.sqlite.JDBC’ not found. 点击&#xff1a;Download missing driver files 点击&#xff1a;Test Connection 这样就ok了&#xff1b;

spring事件发布

Spring事件发布 Spring内置事件 EventExplanationContextRefreshedEvent在 ApplicationContext 初始化或刷新时发布ContextStartedEvent使用 ConfigurableApplicationContext 接口上的 start() 方法启动 ApplicationContext 时发布ContextStoppedEvent在通过使用 Configurabl…

电脑提示kernel32.dll的错误提示窗口怎么办,解决kernel32.dll丢的办法

当你在使用电脑时&#xff0c;突然收到kernel32.dll丢失或找不到的错误提示窗口&#xff0c;这个时候先不要让自己的心态爆炸&#xff0c;解决的办法会有很多种&#xff0c;其实问题都不大&#xff0c;就能够很好的解决文件缺失的问题。接下来就把方法推进给大家。 一.解决kern…

平面设计师要会3D吗 优漫动游

所谓物以稀为贵&#xff0c;对于设计人才也一样。越是稀缺的能力&#xff0c;能够发挥的价值就越高。于是现在很多互联网名企在招聘的时候都加了一条&#xff1a;会3D设计者优先。 其实这些看起来很厉害的设计&#xff0c;归结起来无非就三种形式&#xff1a;插画、三维、合成…

17个开源的Go语言博客和CMS解决方案

Go语言&#xff0c;也称为Golang&#xff0c;是一种为构建高效、可靠和可扩展软件而设计的开源编程语言。它于2007年在Google开发&#xff0c;现在广泛用于开发Web应用程序、网络工具和系统软件。 为什么使用基于Go的CMS解决方案&#xff1f; 这些优势使Go成为开发可扩展、高…

一文拿捏对象内存布局及JMM(JAVA内存模型)

1 JMM(Java Memory Model) 1 概述 Java内存模型(Java Memory Model简称JMM)是一种抽象的概念&#xff0c;并不真实存在&#xff0c;它描述的一组规则或者规范。通过这些规则、规范定义了程序中各个变量的访问方式。jvm运行的程序的实体是线程&#xff0c;而每个线程运行时&am…

【动手学深度学习-Pytorch版】BERT预测系列——BERTModel

本小节主要实现了以下几部分内容&#xff1a; 从一个句子中提取BERT输入序列以及相对的segments段落索引&#xff08;因为BERT支持输入两个句子&#xff09;BERT使用的是Transformer的Encoder部分&#xff0c;所以需要需要使用Encoder进行前向传播&#xff1a;输出的特征等于词…

spring6使用启用Log4j2日志框架

文章目录 Log4j2日志概述1. 引入Log4j2依赖2. 加入日志配置文件3. 测试 Log4j2日志概述 在项目开发中&#xff0c;日志十分的重要&#xff0c;不管是记录运行情况还是定位线上问题&#xff0c;都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息&#xff…