Avalonia DataGrid加载数据时触发StackOverflow异常的原因排查求助
Avalonia DataGrid加载数据时触发StackOverflow异常的原因排查求助
大家好,我最近在做一个Avalonia MVVM项目,遇到了个棘手的问题——点击按钮加载数据到DataGrid时,直接抛出了StackOverflow异常。翻来覆去检查了好几遍代码,还是没找到问题根源,想请大家帮忙看看哪里出错了!
我的代码文件如下:
MainWindow.axaml:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="using:SalesApp.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="SalesApp.Views.MainWindow" x:DataType="vm:MainWindowViewModel" Icon="/Assets/avalonia-logo.ico" Title="SalesApp"> <Design.DataContext> <vm:MainWindowViewModel/> </Design.DataContext> <Border Classes="card"> <StackPanel Spacing="10"> <TextBlock Text="{Binding DateSales.Count, StringFormat='عدد الأيام: {0}'}" Classes="title"/> <Button Content="AddNew" Command="{Binding LoadDataCommand}"/> <DataGrid ItemsSource="{Binding DateSales, Mode=OneWay}" AutoGenerateColumns="False" IsReadOnly="True" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserSortColumns="True" GridLinesVisibility="All"> <DataGrid.Columns> <DataGridTextColumn Header="التاريخ" Binding="{Binding Date, StringFormat='{}{0:dd-MM-yyyy}'}"/> <DataGridTextColumn Header="عدد الطلبات" Binding="{Binding OrderCount}"/> <DataGridTextColumn Header="إجمالي الإيرادات" Binding="{Binding TotalRevenue}"/> <DataGridTextColumn Header="عدد المنتجات" Binding="{Binding ItemsCount}"/> </DataGrid.Columns> </DataGrid> </StackPanel> </Border> </Window>
MainWindowViewModel.cs:
namespace SalesApp.ViewModels; using System; using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; public class SalesByDateDto { public DateTime Date { get; set; } public int OrderCount { get; set; } public decimal TotalRevenue { get; set; } public int ItemsCount { get; set; } } public partial class MainWindowViewModel : ViewModelBase { [ObservableProperty] private ObservableCollection<SalesByDateDto> dateSales = new(); public string Greeting { get; } = "Welcome to Avalonia!"; [RelayCommand] private void LoadData() { // Simulate loading data DateSales = new ObservableCollection<SalesByDateDto> { new SalesByDateDto { Date = DateTime.Today, OrderCount = 10, TotalRevenue = 1000m, ItemsCount = 50 }, new SalesByDateDto { Date = DateTime.Today.AddDays(-1), OrderCount = 8, TotalRevenue = 800m, ItemsCount = 40 }, new SalesByDateDto { Date = DateTime.Today.AddDays(-2), OrderCount = 12, TotalRevenue = 1200m, ItemsCount = 60 } }; } }
app.axaml:
<Application xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SalesApp.App" xmlns:local="using:SalesApp" RequestedThemeVariant="Default"> <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. --> <Application.DataTemplates> <local:ViewLocator/> </Application.DataTemplates> <Application.Styles> <FluentTheme /> <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/> </Application.Styles> </Application>
问题复现步骤:
- 使用的Avalonia版本是
11.3.12 - 操作系统是
Ubuntu 24.04.4 LTS
我通过以下命令创建项目并安装依赖:
dotnet new avalonia.mvvm -o SalesApp cd SalesApp dotnet package update dotnet package add Avalonia.Controls.DataGrid
替换成上面的代码文件后,运行程序点击"AddNew"按钮就会触发StackOverflow异常。有没有大佬能帮我定位下问题呀?
备注:内容来源于stack exchange,提问作者Ibram Reda
相关产品推荐
相关产品推荐

