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);
            });
        }
Ejemplo n.º 2
0
        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);
            });
        }