コード例 #1
0
        public SettingsViewModel(UserSettings settings, IDialogManager dialogManager, IRestarter restarter)
        {
            _dialogManager = dialogManager;
            DisplayName    = "Settings";
            _settings      = settings;

            // create accent color menu items for the demo
            Accents = ThemeInfo.Accents
                      .Select(
                a => new AccentColorMenuData {
                Name = a.Name, ColorBrush = a.ColorBrush
            }).ToList();

            // create metro theme color menu items for the demo
            Themes = ThemeInfo.Themes
                     .Select(
                a =>
                new AppThemeMenuData {
                Name             = a.Name,
                BorderColorBrush = a.BorderColorBrush,
                ColorBrush       = a.ColorBrush
            }).ToList();

            DiagnosticsMenu = new DiagnosticsMenu(_dialogManager, restarter);

            // Task.Run because RXCommand does not throw exceptions in Subscribe.
            ReactiveCommand.CreateAsyncTask(x => Task.Run(() => Logout()))
            .SetNewCommand(this, x => x.LogoutCommand)
            .Subscribe();
            ReactiveCommand.CreateAsyncTask(
                x => Cheat.PublishEventUi(new RequestGameSettingsOverlay(Guid.Empty)))
            .SetNewCommand(this, x => x.GameSettingsCommand)
            .Subscribe();

            _settings.WhenAnyValue(x => x.GameOptions.SteamDirectory)
            .BindTo(this, x => x.SteamDirectory);

            this.WhenAnyValue(x => x.SteamDirectory)
            .Select(x => x == DefaultSteamDirectory ? null : x)
            .Where(x => x == null || x.IsValidAbsoluteDirectoryPath())
            .BindTo(_settings.GameOptions, x => x.SteamDirectory);

            this.WhenAnyValue(x => x.DefaultSteamDirectory)
            .Where(x => string.IsNullOrWhiteSpace(SteamDirectory) && !string.IsNullOrWhiteSpace(x))
            .Subscribe(x => SteamDirectory = x);

            SetupPropertyGrid();
        }