Browse Source

Show scroll info in virt test app.

pull/554/head
Steven Kirk 11 years ago
parent
commit
43d9fa5724
  1. 16
      samples/VirtualizationTest/MainWindow.xaml
  2. 14
      samples/VirtualizationTest/Program.cs
  3. 3
      samples/VirtualizationTest/ViewModels/ItemViewModel.cs
  4. 12
      samples/VirtualizationTest/VirtualizationTest.csproj
  5. 1
      samples/VirtualizationTest/packages.config
  6. 14
      src/Avalonia.Controls/ListBox.cs

16
samples/VirtualizationTest/MainWindow.xaml

@ -1,13 +1,25 @@
<Window xmlns="https://github.com/avaloniaui"
Title="Avalonia Virtualization Test">
<DockPanel LastChildFill="True" Margin="16">
<StackPanel DockPanel.Dock="Right" Margin="16 0 0 0">
<StackPanel DockPanel.Dock="Right"
Margin="16 0 0 0"
MinWidth="150"
Gap="4">
<TextBox Watermark="Item Count"
UseFloatingWatermark="True"
Text="{Binding ItemCount}"/>
<TextBox Watermark="Extent"
UseFloatingWatermark="True"
Text="{Binding #listBox.Scroll.Extent, Mode=OneWay}"/>
<TextBox Watermark="Offset"
UseFloatingWatermark="True"
Text="{Binding #listBox.Scroll.Offset, Mode=OneWay}"/>
<TextBox Watermark="Viewport"
UseFloatingWatermark="True"
Text="{Binding #listBox.Scroll.Viewport, Mode=OneWay}"/>
</StackPanel>
<ListBox Items="{Binding Items}">
<ListBox Name="listBox" Items="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>

14
samples/VirtualizationTest/Program.cs

@ -4,6 +4,8 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Logging.Serilog;
using Serilog;
namespace VirtualizationTest
{
@ -11,10 +13,22 @@ namespace VirtualizationTest
{
static void Main(string[] args)
{
InitializeLogging();
AppBuilder.Configure<App>()
.UseWin32()
.UseDirect2D1()
.Start<MainWindow>();
}
private static void InitializeLogging()
{
#if DEBUG
SerilogLogger.Initialize(new LoggerConfiguration()
.MinimumLevel.Warning()
.WriteTo.Trace(outputTemplate: "{Area}: {Message}")
.CreateLogger());
#endif
}
}
}

3
samples/VirtualizationTest/ViewModels/ItemViewModel.cs

@ -2,10 +2,11 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using ReactiveUI;
namespace VirtualizationTest.ViewModels
{
internal class ItemViewModel
internal class ItemViewModel : ReactiveObject
{
private int _index;

12
samples/VirtualizationTest/VirtualizationTest.csproj

@ -36,6 +36,14 @@
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
<HintPath>..\..\packages\Serilog.1.5.14\lib\net45\Serilog.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Serilog.FullNetFx, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
<HintPath>..\..\packages\Serilog.1.5.14\lib\net45\Serilog.FullNetFx.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
<Private>True</Private>
@ -114,6 +122,10 @@
<Project>{42472427-4774-4c81-8aff-9f27b8e31721}</Project>
<Name>Avalonia.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Avalonia.Logging.Serilog\Avalonia.Logging.Serilog.csproj">
<Project>{B61B66A3-B82D-4875-8001-89D3394FE0C9}</Project>
<Name>Avalonia.Logging.Serilog</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Avalonia.ReactiveUI\Avalonia.ReactiveUI.csproj">
<Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
<Name>Avalonia.ReactiveUI</Name>

1
samples/VirtualizationTest/packages.config

@ -5,5 +5,6 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="net452" />
<package id="Rx-Main" version="2.2.5" targetFramework="net452" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net452" />
<package id="Serilog" version="1.5.14" targetFramework="net452" />
<package id="Splat" version="1.6.2" targetFramework="net452" />
</packages>

14
src/Avalonia.Controls/ListBox.cs

@ -21,6 +21,12 @@ namespace Avalonia.Controls
private static readonly FuncTemplate<IPanel> DefaultPanel =
new FuncTemplate<IPanel>(() => new VirtualizingStackPanel());
/// <summary>
/// Defines the <see cref="Scroll"/> property.
/// </summary>
public static readonly DirectProperty<ListBox, IScrollable> ScrollProperty =
AvaloniaProperty.RegisterDirect<ListBox, IScrollable>(nameof(Scroll), o => o.Scroll);
/// <summary>
/// Defines the <see cref="SelectedItems"/> property.
/// </summary>
@ -39,6 +45,8 @@ namespace Avalonia.Controls
public static readonly AvaloniaProperty<ItemVirtualizationMode> VirtualizationModeProperty =
ItemsPresenter.VirtualizationModeProperty.AddOwner<ListBox>();
private IScrollable _scroll;
/// <summary>
/// Initializes static members of the <see cref="ItemsControl"/> class.
/// </summary>
@ -50,7 +58,11 @@ namespace Avalonia.Controls
/// <summary>
/// Gets the scroll information for the <see cref="ListBox"/>.
/// </summary>
public IScrollable Scroll { get; set; }
public IScrollable Scroll
{
get { return _scroll; }
private set { SetAndRaise(ScrollProperty, ref _scroll, value); }
}
/// <inheritdoc/>
public new IList SelectedItems => base.SelectedItems;

Loading…
Cancel
Save