Browse Source

add repro for treeview issue.

treeview-issue-repro
Dan Walmsley 3 years ago
parent
commit
b4e237e980
  1. 7
      samples/ControlCatalog/Pages/TreeViewPage.xaml
  2. 15
      samples/ControlCatalog/ViewModels/TreeViewPageViewModel.cs

7
samples/ControlCatalog/Pages/TreeViewPage.xaml

@ -11,7 +11,7 @@
HorizontalAlignment="Center"
Spacing="16">
<StackPanel Orientation="Vertical" Spacing="8">
<TreeView ItemsSource="{Binding Items}" SelectedItems="{Binding SelectedItems}" SelectionMode="{Binding SelectionMode}" Width="250" Height="350">
<TreeView ItemsSource="{Binding Items}" SelectedItems="{Binding SelectedItems}" SelectedItem="{Binding SelectedItem}" SelectionMode="{Binding SelectionMode}" Width="250" Height="350">
<TreeView.ItemTemplate>
<TreeDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Header}"/>
@ -19,6 +19,11 @@
</TreeView.ItemTemplate>
</TreeView>
<StackPanel Orientation="Horizontal">
<TextBlock Text="SelectedItem: " />
<TextBlock Text="{Binding SelectedItem.Header}" />
</StackPanel>
<Button Command="{Binding AddItemCommand}">Add</Button>
<Button Command="{Binding RemoveItemCommand}">Remove</Button>
<Button Command="{Binding SelectRandomItemCommand}">Select Random</Button>

15
samples/ControlCatalog/ViewModels/TreeViewPageViewModel.cs

@ -10,6 +10,7 @@ namespace ControlCatalog.ViewModels
{
private readonly Node _root;
private SelectionMode _selectionMode;
private Node _selectedItem;
public TreeViewPageViewModel()
{
@ -25,6 +26,13 @@ namespace ControlCatalog.ViewModels
public ObservableCollection<Node> Items { get; }
public ObservableCollection<Node> SelectedItems { get; }
public Node SelectedItem
{
get => _selectedItem;
set => this.RaiseAndSetIfChanged(ref _selectedItem, value);
}
public MiniCommand AddItemCommand { get; }
public MiniCommand RemoveItemCommand { get; }
public MiniCommand SelectRandomItemCommand { get; }
@ -47,12 +55,7 @@ namespace ControlCatalog.ViewModels
private void RemoveItem()
{
while (SelectedItems.Count > 0)
{
Node lastItem = (Node)SelectedItems[0];
RecursiveRemove(Items, lastItem);
SelectedItems.RemoveAt(0);
}
SelectedItem?.Parent?.RemoveItem(SelectedItem);
bool RecursiveRemove(ObservableCollection<Node> items, Node selectedItem)
{

Loading…
Cancel
Save