// -----------------------------------------------------------------------
//
// Copyright 2015 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.Diagnostics.ViewModels
{
using System.Reactive.Linq;
using Perspex.Controls;
using ReactiveUI;
internal class VisualTreeViewModel : ReactiveObject
{
private VisualTreeNode selected;
private ObservableAsPropertyHelper details;
public VisualTreeViewModel(Control root)
{
this.Nodes = VisualTreeNode.Create(root);
this.details = this.WhenAnyValue(x => x.SelectedNode)
.Select(x => x != null ? new ControlDetailsViewModel(x.Control) : null)
.ToProperty(this, x => x.Details);
}
public VisualTreeNode[] Nodes { get; }
public VisualTreeNode SelectedNode
{
get { return this.selected; }
set { this.RaiseAndSetIfChanged(ref this.selected, value); }
}
public ControlDetailsViewModel Details
{
get { return this.details.Value; }
}
}
}