public CreateNewLabelControl() { this.InitializeComponent(); this.WhenActivated(disposable => { this.Bind(ViewModel, vm => vm.ScopedLabelValue, view => view.LabelTextBox.Text) .DisposeWith(disposable); this.BindValidation(ViewModel, vm => vm.ValidLabelRule, view => view.LabelTextBoxError.Text) .DisposeWith(disposable); this.Bind(ViewModel, vm => vm.Description, view => view.DescriptionTextBox.Text) .DisposeWith(disposable); this.Bind(ViewModel, vm => vm.ColorHexString, view => view.ColorBox.Text) .DisposeWith(disposable); ColorPickerFlyout.Events().Closing .Select(_ => { var color = ColorPicker.Color; return(Color.FromArgb(255, color.R, color.G, color.B).ToHexColor()); }) .BindTo(ViewModel, vm => vm.ColorHexString) .DisposeWith(disposable); this.OneWayBind(ViewModel, vm => vm.Color, view => view.ColorPicker.Color, color => color.ToWindowsUiColor()) .DisposeWith(disposable); this.WhenAnyValue(x => x.ViewModel.Color) .Select(color => color.ToHexColor()) .BindTo(ColorBox, view => view.Text) .DisposeWith(disposable); this.OneWayBind(ViewModel, vm => vm.Color, view => view.LabelPreview.Color) .DisposeWith(disposable); CreateLabelBtn.Events().Click .Select(_ => Unit.Default) .InvokeCommand(ViewModel, vm => vm.CreateLabel) .DisposeWith(disposable); CancelBtn.Events().Click .Select(_ => Unit.Default) .InvokeCommand(ViewModel, vm => vm.Cancel) .DisposeWith(disposable); }); }
public EditProjectView() { ViewModel = WpfFactory.CreateViewModel <EditProjectViewModel>(); ViewModel.OnRequestClose += () => { Dispatcher.Invoke(Close); }; InitializeComponent(); this.WhenActivated(d => { ViewModel .WhenAnyValue(vm => vm.ProjectName) .Subscribe(projectName => { var isNewProject = ViewModel.ProjectId == Guid.Empty; Title = $"{(isNewProject ? "New" : "Edit")} Project {projectName}"; }) .DisposeWith(d); this .Bind(ViewModel, vm => vm.ProjectName, v => v.ProjectNameTextBox.Text); this .Bind(ViewModel, vm => vm.ProjectIndex, v => v.ModIndexTextBox.Text); this .Bind(ViewModel, vm => vm.CookedAssetsDir, v => v.CookedAssetsDirTextBox.Text); this .Bind(ViewModel, vm => vm.DistDir, v => v.OutputDirTextBox.Text); CancelBtn .Events() .Click .Subscribe(e => { Close(); }) .DisposeWith(d); SaveBtn .Events() .Click .Select(e => Unit.Default) .InvokeCommand(ViewModel.SaveProjectInfoCommand) .DisposeWith(d); SelectCookedAssetsDirBtn .Events() .Click .Select(e => SelectDirMode.SelectCookedAssetsDir) .InvokeCommand(ViewModel.SelectAssetsDirCommand) .DisposeWith(d); SelectOutputDirBtn .Events() .Click .Select(e => SelectDirMode.SelectOutputDir) .InvokeCommand(ViewModel.SelectAssetsDirCommand) .DisposeWith(d); }); }