using System.Diagnostics; using System.Reactive.Disposables; using System.Reactive.Linq; using System.Windows; using Intromat.ViewModels.Nodes; using ReactiveUI; namespace Intromat.Views.Editors { public partial class GroupEndpointEditorView : IViewFor { public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(IGroupEndpointEditorViewModel), typeof(GroupEndpointEditorView), new PropertyMetadata(null)); public GroupEndpointEditorView() { InitializeComponent(); this.WhenAnyValue(v => v.editNameButton.IsChecked) .Select(isChecked => isChecked ?? false ? Visibility.Visible : Visibility.Collapsed) .BindTo(this, v => v.nameTextBox.Visibility); this.WhenActivated(d => { Debug.Assert(ViewModel != null, nameof(ViewModel) + " != null"); this.Bind(ViewModel, vm => vm.Endpoint.Name, v => v.nameTextBox.Text).DisposeWith(d); this.BindCommand(ViewModel, vm => vm.MoveUp, v => v.upButton).DisposeWith(d); this.BindCommand(ViewModel, vm => vm.MoveDown, v => v.downButton).DisposeWith(d); this.BindCommand(ViewModel, vm => vm.Delete, v => v.deleteButton).DisposeWith(d); }); } public IGroupEndpointEditorViewModel? ViewModel { get => (IGroupEndpointEditorViewModel?)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value); } object? IViewFor.ViewModel { get => ViewModel; set => ViewModel = (IGroupEndpointEditorViewModel?)value; } } }