怎样建立自己网站难吗,潍坊高新建设局网站,建站优化,做的最好的紫砂网站1.Avalonia中的DataGrid的使用
DataGrid 是客户端 UI 中一个非常重要的控件。在 Avalonia 中#xff0c;DataGrid 是一个独立的包 Avalonia.Controls.DataGrid#xff0c;因此需要单独通过 NuGet 安装。接下来#xff0c;将介绍如何安装和使用 DataGrid 控件。
2.安装 Dat…1.Avalonia中的DataGrid的使用
DataGrid 是客户端 UI 中一个非常重要的控件。在 Avalonia 中DataGrid 是一个独立的包 Avalonia.Controls.DataGrid因此需要单独通过 NuGet 安装。接下来将介绍如何安装和使用 DataGrid 控件。
2.安装 DataGrid 包
要使用 DataGrid 控件首先需要在 NuGet 中安装 Avalonia.Controls.DataGrid 包。只需在 NuGet 搜索框中输入 Avalonia.Controls.DataGrid然后进行安装即可。
版本选择 在安装 Avalonia.Controls.DataGrid 包时请确保其版本与 Avalonia 框架版本一致否则可能导致安装失败。Avalonia 框架版本是您创建项目时选择的“Avalonia Version”。
注Avalonia框架版本也可以在“依赖项→包”中查看
3.DataGrid的使用
在 App.axaml 文件中或其他需要使用 DataGrid 的界面文件需要引用 DataGrid 的样式文件。可以通过以下方式在界面中引入
!--下面样式文件二选一--
StyleInclude Sourceavares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml/
StyleInclude Sourceavares://Avalonia.Controls.DataGrid/Themes/Simple.xaml/
注必须引用 DataGrid 的样式文件否则 DataGrid 将无法正确显示。
4.代码实现
App.axaml文件
Application xmlnshttps://github.com/avaloniauixmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlx:ClassdatagridTest.AppRequestedThemeVariantDefault!-- Default ThemeVariant follows system theme variant. Dark or Light are other available options. --Application.StylesFluentTheme/StyleInclude Sourceavares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml//Application.Styles
/Application
MainWindow.axaml文件
Window xmlnshttps://github.com/avaloniauixmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:localclr-namespace:datagridTestx:ClassdatagridTest.MainWindowx:DataTypelocal:MainWindowTitleDataGrid Test Width400 Height300StackPanel!-- 显示 People 的数量修改为显示“行数” --TextBlock Text{Binding PeopleCountText} Margin10 FontSize16 /!-- 按钮点击后加载数据 --Button Content加载数据 Margin10 ClickLoadDataButton_Click/!-- 按钮点击后清除数据 --Button Content清除数据 Margin10 ClickClearDataButton_Click/!-- DataGrid --DataGrid NameDataGrid1 Margin10 ItemsSource{Binding People}SelectionChangedDataGrid_SelectionChangedDoubleTappedDataGrid_DoubleTapped IsReadOnlyTrueDataGrid.ColumnsDataGridTextColumn HeaderID Binding{Binding Id} /DataGridTextColumn Header姓名 Binding{Binding Name} /DataGridTextColumn HeaderAge Binding{Binding Age} //DataGrid.Columns/DataGrid/StackPanel
/Window
MainWindow.axaml.cs文件
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using Avalonia.Interactivity;
using MsBox.Avalonia;namespace datagridTest
{public partial class MainWindow : Window, INotifyPropertyChanged{private ListPerson _people;public ListPerson People{get _people ?? (_people new ListPerson());set{_people value;OnPropertyChanged();OnPropertyChanged(nameof(PeopleCountText));}}public string PeopleCountText $一共有{People.Count}行数据;public MainWindow(){InitializeComponent();DataContext this;People new ListPerson();}private void InitializeComponent(){AvaloniaXamlLoader.Load(this);System.Diagnostics.Debug.WriteLine(XAML loaded successfully);// 获取 DataGrid 控件的引用DataGrid1 this.FindControlDataGrid(DataGrid1);}private void LoadDataButton_Click(object sender, RoutedEventArgs e){People new ListPerson{new Person { Id 1, Name 张三(John Doe), Age 30 },new Person { Id 2, Name 李四(Jane Smith), Age 25 },new Person { Id 3, Name 王五(Sam Brown), Age 35 }};}private void ClearDataButton_Click(object sender, RoutedEventArgs e){People new ListPerson();}private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e){if (DataGrid1 null) return; // 检查 DataGrid1 是否为 nullvar selectedPerson DataGrid1.SelectedItem as Person;if (selectedPerson ! null){MsBox.Avalonia.MessageBoxManager.GetMessageBoxStandard(点击按钮Button Clicked, 您点击了: selectedPerson.Name).ShowWindowAsync();}}// 双击行时触发private void DataGrid_DoubleTapped(object sender, Avalonia.Interactivity.RoutedEventArgs e){if (DataGrid1 null) return; // 检查 DataGrid1 是否为 nullvar selectedPerson DataGrid1.SelectedItem as Person;if (selectedPerson ! null){MsBox.Avalonia.MessageBoxManager.GetMessageBoxStandard(点击按钮Button Clicked, 您点击了: selectedPerson.Id).ShowWindowAsync();}}public event PropertyChangedEventHandler PropertyChanged;protected void OnPropertyChanged([CallerMemberName] string propertyName null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}public class Person{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }}
}
代码解析
1.INotifyPropertyChanged接口 一定要实现INotifyPropertyChanged接口否则界面datagrid数据无法展示。INotifyPropertyChanged 接口用于数据绑定通知确保当数据变化时界面能够自动更新。
2.数据绑定 (Binding): 在XAML中DataGrid的ItemsSource属性通过Binding绑定到了People属性。这意味着DataGrid会显示People集合中的数据。
3.后台代码中的People属性: 在MainWindow类中People是一个ListPerson类型的属性。它存储了要在界面上显示的数据。
4.初始化和数据加载: MainWindow构造函数中DataContext被设置为this即MainWindow的实例使得XAML中的绑定可以访问People属性。
4.数据加载和清除: 在LoadDataButton_Click方法中当点击加载数据按钮时People属性被设置为一个新的ListPerson这会触发OnPropertyChanged()方法从而更新界面。
5.DataGrid_SelectionChanged 事件 触发时机该事件在 DataGrid 中的选中项发生变化时触发。例如用户点击了某一行或选择了某个单元格时。
6.DataGrid_DoubleTapped 事件事件 触发时机该事件在 DataGrid 中某行被双击时触发。即用户快速连续点击某一行时触发。 5.界面展示 源码地址https://download.csdn.net/download/weixin_44643352/90323900 文章转载自: http://www.morning.ddjp.cn.gov.cn.ddjp.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.ypbp.cn.gov.cn.ypbp.cn http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn http://www.morning.nfqyk.cn.gov.cn.nfqyk.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.twhgn.cn.gov.cn.twhgn.cn http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.jtrqn.cn.gov.cn.jtrqn.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.nlffl.cn.gov.cn.nlffl.cn http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn http://www.morning.rldph.cn.gov.cn.rldph.cn http://www.morning.hflrz.cn.gov.cn.hflrz.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.pdmc.cn.gov.cn.pdmc.cn http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn http://www.morning.lfcfn.cn.gov.cn.lfcfn.cn http://www.morning.jhqcr.cn.gov.cn.jhqcr.cn http://www.morning.qjxkx.cn.gov.cn.qjxkx.cn http://www.morning.hcqpc.cn.gov.cn.hcqpc.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.kmprl.cn.gov.cn.kmprl.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn http://www.morning.cbnxq.cn.gov.cn.cbnxq.cn http://www.morning.csnch.cn.gov.cn.csnch.cn http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn http://www.morning.ttxnj.cn.gov.cn.ttxnj.cn http://www.morning.snbq.cn.gov.cn.snbq.cn http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn http://www.morning.psxwc.cn.gov.cn.psxwc.cn http://www.morning.kmqjx.cn.gov.cn.kmqjx.cn http://www.morning.zkdmk.cn.gov.cn.zkdmk.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn http://www.morning.qjghx.cn.gov.cn.qjghx.cn http://www.morning.phxdc.cn.gov.cn.phxdc.cn http://www.morning.rhwty.cn.gov.cn.rhwty.cn http://www.morning.sskkf.cn.gov.cn.sskkf.cn http://www.morning.gqddl.cn.gov.cn.gqddl.cn http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn http://www.morning.zzaxr.cn.gov.cn.zzaxr.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.kclkb.cn.gov.cn.kclkb.cn http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn http://www.morning.kzcfr.cn.gov.cn.kzcfr.cn http://www.morning.ffbp.cn.gov.cn.ffbp.cn http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn http://www.morning.xoaz.cn.gov.cn.xoaz.cn http://www.morning.nqcts.cn.gov.cn.nqcts.cn http://www.morning.abgy8.com.gov.cn.abgy8.com http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.dkcpt.cn.gov.cn.dkcpt.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.jphxt.cn.gov.cn.jphxt.cn http://www.morning.qydgk.cn.gov.cn.qydgk.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.sjwzz.cn.gov.cn.sjwzz.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.brscd.cn.gov.cn.brscd.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.cttgj.cn.gov.cn.cttgj.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.nkpls.cn.gov.cn.nkpls.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.fqklt.cn.gov.cn.fqklt.cn http://www.morning.lkkgq.cn.gov.cn.lkkgq.cn