Explorar o código

Added repro for #10367 to virtualization demo.

Steven Kirk %!s(int64=2) %!d(string=hai) anos
pai
achega
35d70577f4

+ 3 - 0
samples/VirtualizationDemo/MainWindow.axaml

@@ -12,5 +12,8 @@
     <TabItem Header="Chat" >
       <views:ChatPageView DataContext="{Binding Chat}"/>
     </TabItem>
+    <TabItem Header="Expanders">
+      <views:ExpanderPageView DataContext="{Binding Expanders}"/>
+    </TabItem>
   </controls:HamburgerMenu>
 </Window>

+ 21 - 0
samples/VirtualizationDemo/ViewModels/ExpanderItemViewModel.cs

@@ -0,0 +1,21 @@
+using MiniMvvm;
+
+namespace VirtualizationDemo.ViewModels;
+
+public class ExpanderItemViewModel : ViewModelBase
+{
+    private string? _header;
+    private bool _isExpanded;
+
+    public string? Header 
+    { 
+        get => _header;
+        set => RaiseAndSetIfChanged(ref _header, value);
+    }
+
+    public bool IsExpanded
+    {
+        get => _isExpanded;
+        set => RaiseAndSetIfChanged(ref _isExpanded, value);
+    }
+}

+ 17 - 0
samples/VirtualizationDemo/ViewModels/ExpanderPageViewModel.cs

@@ -0,0 +1,17 @@
+using System.Collections.ObjectModel;
+using System.Linq;
+
+namespace VirtualizationDemo.ViewModels;
+
+internal class ExpanderPageViewModel
+{
+    public ExpanderPageViewModel()
+    {
+        Items = new(Enumerable.Range(0, 100).Select(x => new  ExpanderItemViewModel
+        {
+            Header = $"Item {x}",
+        }));
+    }
+
+    public ObservableCollection<ExpanderItemViewModel> Items { get; set; }
+}

+ 1 - 0
samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs

@@ -5,4 +5,5 @@ namespace VirtualizationDemo.ViewModels;
 internal class MainWindowViewModel : ViewModelBase
 {
     public ChatPageViewModel Chat { get; } = new();
+    public ExpanderPageViewModel Expanders { get; } = new();
 }

+ 18 - 0
samples/VirtualizationDemo/Views/ExpanderPageView.axaml

@@ -0,0 +1,18 @@
+<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:vm="using:VirtualizationDemo.ViewModels"
+             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+             x:Class="VirtualizationDemo.Views.ExpanderPageView"
+             x:DataType="vm:ExpanderPageViewModel">
+  <ListBox ItemsSource="{Binding Items}">
+    <ListBox.ItemTemplate>
+      <DataTemplate>
+        <Expander Header="{Binding Header}" IsExpanded="{Binding IsExpanded}">
+          <Border Width="200" Height="300"/>
+        </Expander>
+      </DataTemplate>
+    </ListBox.ItemTemplate>
+  </ListBox>
+</UserControl>

+ 13 - 0
samples/VirtualizationDemo/Views/ExpanderPageView.axaml.cs

@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace VirtualizationDemo.Views;
+
+public partial class ExpanderPageView : UserControl
+{
+    public ExpanderPageView()
+    {
+        InitializeComponent();
+    }
+}