Browse Source

Allow random item heights in VirtualizationDemo.

Add a "randomize" and "reset" button in order to test #2144.
pull/2591/head
Steven Kirk 7 years ago
parent
commit
564d8f1510
  1. 4
      samples/VirtualizationDemo/MainWindow.xaml
  2. 7
      samples/VirtualizationDemo/ViewModels/ItemViewModel.cs
  3. 18
      samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs

4
samples/VirtualizationDemo/MainWindow.xaml

@ -39,6 +39,8 @@
<Button Command="{Binding RecreateCommand}">Recreate</Button> <Button Command="{Binding RecreateCommand}">Recreate</Button>
<Button Command="{Binding SelectFirstCommand}">Select First</Button> <Button Command="{Binding SelectFirstCommand}">Select First</Button>
<Button Command="{Binding SelectLastCommand}">Select Last</Button> <Button Command="{Binding SelectLastCommand}">Select Last</Button>
<Button Command="{Binding RandomizeSize}">Randomize Size</Button>
<Button Command="{Binding ResetSize}">Reset Size</Button>
</StackPanel> </StackPanel>
<ListBox Name="listBox" <ListBox Name="listBox"
@ -55,7 +57,7 @@
</ListBox.ItemsPanel> </ListBox.ItemsPanel>
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding Header}" TextWrapping="Wrap"/> <TextBlock Text="{Binding Header}" Height="{Binding Height}" TextWrapping="Wrap"/>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>

7
samples/VirtualizationDemo/ViewModels/ItemViewModel.cs

@ -10,6 +10,7 @@ namespace VirtualizationDemo.ViewModels
{ {
private string _prefix; private string _prefix;
private int _index; private int _index;
private double _height = double.NaN;
public ItemViewModel(int index, string prefix = "Item") public ItemViewModel(int index, string prefix = "Item")
{ {
@ -18,5 +19,11 @@ namespace VirtualizationDemo.ViewModels
} }
public string Header => $"{_prefix} {_index}"; public string Header => $"{_prefix} {_index}";
public double Height
{
get => _height;
set => this.RaiseAndSetIfChanged(ref _height, value);
}
} }
} }

18
samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs

@ -98,6 +98,24 @@ namespace VirtualizationDemo.ViewModels
public ReactiveCommand SelectFirstCommand { get; private set; } public ReactiveCommand SelectFirstCommand { get; private set; }
public ReactiveCommand SelectLastCommand { get; private set; } public ReactiveCommand SelectLastCommand { get; private set; }
public void RandomizeSize()
{
var random = new Random();
foreach (var i in Items)
{
i.Height = random.Next(240) + 10;
}
}
public void ResetSize()
{
foreach (var i in Items)
{
i.Height = double.NaN;
}
}
private void ResizeItems(int count) private void ResizeItems(int count)
{ {
if (Items == null) if (Items == null)

Loading…
Cancel
Save