当前位置: 首页 > news >正文

Avalonia-数据绑定

Avalonia 数据绑定

在Avalonia 中绑定数据和在WPF 中类似,但也有些区别,如果全按照wpf中的绑定方式,则会失败

1.在窗体AXAML中指定绑定数据类型,即数据上下文使用的类型。x:DataType="vm:MainViewModel",如果不指定则会报错。

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm="using:AvaMvvmDemo.ViewModels"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d" x:DataType="vm:MainViewModel"x:Class="AvaMvvmDemo.Views.MainWindow"Icon="/Assets/avalonia-logo.ico"Title="AvaMvvmDemo"Width="800" Height="600"><Grid RowDefinitions="Auto,*" ShowGridLines="True"><StackPanel Orientation="Horizontal" Height="40"><TextBlock Text="{Binding Caption}"/></StackPanel><Grid Grid.Row="1" ColumnDefinitions="*,*,*" ShowGridLines="True"><ListBox x:Name="lb" ItemsSource="{Binding Products}"><ListBox.ItemTemplate><DataTemplate><Grid ColumnDefinitions="*,*,*,*"><TextBlock Text="{Binding Id}" Grid.Column="0"/><TextBlock Text="{Binding Name}" Grid.Column="1" /><TextBlock Text="{Binding Description}" Grid.Column="2" /><TextBlock Text="{Binding Price}" Grid.Column="3" />	   </Grid></DataTemplate></ListBox.ItemTemplate></ListBox></Grid></Grid>

Models

namespace AvaMvvmDemo.Models
{public class Product{public int Id { get; set; }public string Name { get; set; }public string Description { get; set; }public decimal Price { get; set; }  }
}

ViewModels

using CommunityToolkit.Mvvm.ComponentModel;
using System.Collections.ObjectModel;namespace AvaMvvmDemo.ViewModels
{public partial class MainViewModel:ObservableObject{[ObservableProperty]private ObservableCollection<Product> _products=new ObservableCollection<Product>();public MainViewModel(){Products.Add(new Product { Id=1,Name="篮球",Description="体育用品",Price=125.0M});Products.Add(new Product { Id = 2,Name = "足球", Description = "体育用品", Price = 320.0M });Caption = "Test";}[ObservableProperty]private string _caption;}
}

效果
image

http://www.jsqmd.com/news/338655/

相关文章:

  • 分享如何实现前端埋点工程
  • 2026金三银四必看:AI Agent全栈学习路线,三个月从小白到Offer收割机!
  • 2026届毕业生就业新方向,从零开始学大模型开发,实战项目+名师指导,立即收藏!
  • 设计师必藏!1招秒杀相似图,告别手动翻文件夹的痛
  • 技巧总结
  • 春晚AI机器人揭秘:大模型技术已成熟,普通人如何抓住新风口?
  • 模型数据标注规范全解析:从国标到企标的标准化实践指南
  • 墨韵新生:一位书法爱好者的鸿蒙原生应用开发手记——从手机拍字帖到PC临摹的42天破界之旅
  • 大数据领域数据产品的体育行业应用
  • 收藏必看!大模型时代来临:计算机缺口500万,应届生如何拿50W+年薪
  • C++与Docker集成开发
  • 在Windows上启用Selenium + Chrome Profile建立自动登录爬虫
  • Spring Boot 定时任务详解(从入门到实战)
  • 提示工程架构师必备:领域驱动设计(DDD)落地实战指南,从理论到代码全流程!
  • 2026澳洲奶粉品牌推荐:CareBirth臻护新苼聚焦A2奶源与科学分阶,澳洲袋鼠标认证 - 深度智识库
  • 5个实用的诊断性分析工具推荐:大数据工程师必备
  • C++ Primer Notes
  • 基于区块链的传感器数据存证与溯源系统
  • MIT-6-036-机器学习入门笔记-全-
  • C++中的享元模式实战
  • supermemo体验前的准备 - LI,Yi
  • 多核并行计算优化
  • 最小表示法
  • 代码动态生成技术
  • C++20概念(Concepts)入门指南
  • 2026年有袋鼠标的澳洲奶粉品牌精选:科学分阶营养,宝宝吸收更好、性价比更高 - 深度智识库
  • C++中的备忘录模式
  • 分布式锁服务实现
  • leetcode 896. Monotonic Array 单调数列-耗时100
  • Victim01_042220