Browse Source

Make TreeViewPage work.

wip/use-selectionmodel
Steven Kirk 6 years ago
parent
commit
e54aee8d0a
  1. 2
      samples/ControlCatalog/Pages/TreeViewPage.xaml
  2. 15
      samples/ControlCatalog/Pages/TreeViewPage.xaml.cs

2
samples/ControlCatalog/Pages/TreeViewPage.xaml

@ -10,7 +10,7 @@
HorizontalAlignment="Center"
Spacing="16">
<StackPanel Orientation="Vertical" Spacing="8">
<TreeView Items="{Binding Items}" SelectedItems="{Binding SelectedItems}" SelectionMode="{Binding SelectionMode}" Width="250" Height="350">
<TreeView Items="{Binding Items}" Selection="{Binding Selection}" SelectionMode="{Binding SelectionMode}" Width="250" Height="350">
<TreeView.ItemTemplate>
<TreeDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Header}"/>

15
samples/ControlCatalog/Pages/TreeViewPage.xaml.cs

@ -28,21 +28,22 @@ namespace ControlCatalog.Pages
{
Node root = new Node();
Items = root.Children;
SelectedItems = new ObservableCollection<Node>();
Selection = new SelectionModel();
AddItemCommand = ReactiveCommand.Create(() =>
{
Node parentItem = SelectedItems.Count > 0 ? SelectedItems[0] : root;
Node parentItem = Selection.SelectedItems.Count > 0 ?
(Node)Selection.SelectedItems[0] : root;
parentItem.AddNewItem();
});
RemoveItemCommand = ReactiveCommand.Create(() =>
{
while (SelectedItems.Count > 0)
while (Selection.SelectedItems.Count > 0)
{
Node lastItem = SelectedItems[0];
Node lastItem = (Node)Selection.SelectedItems[0];
RecursiveRemove(Items, lastItem);
SelectedItems.Remove(lastItem);
Selection.Deselect(Selection.SelectedIndices[0]);
}
bool RecursiveRemove(ObservableCollection<Node> items, Node selectedItem)
@ -67,7 +68,7 @@ namespace ControlCatalog.Pages
public ObservableCollection<Node> Items { get; }
public ObservableCollection<Node> SelectedItems { get; }
public SelectionModel Selection { get; }
public ReactiveCommand<Unit, Unit> AddItemCommand { get; }
@ -78,7 +79,7 @@ namespace ControlCatalog.Pages
get => _selectionMode;
set
{
SelectedItems.Clear();
Selection.ClearSelection();
this.RaiseAndSetIfChanged(ref _selectionMode, value);
}
}

Loading…
Cancel
Save