public ServerSettingsViewModel(OptionsModel model, IOptionTasks optionTasks, IViewOptions viewOptions) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (optionTasks == null) { throw new ArgumentNullException(nameof(optionTasks)); } if (viewOptions == null) { throw new ArgumentNullException(nameof(viewOptions)); } _model = model; _optionTasks = optionTasks; ViewOptions = viewOptions; _testConnectionCommand = new DelegateCommandWithoutCanExecuteDelegation(_ => { ComponentContainer.EnsureSynchronizationContext(); TestConnectionAsync(); }); _getAccountSettingsCommand = new DelegateCommandWithoutCanExecuteDelegation(_ => { ComponentContainer.EnsureSynchronizationContext(); _model.AutoFillAccountSettings(); }); _createDavResourceCommand = new DelegateCommandWithoutCanExecuteDelegation(_ => { ComponentContainer.EnsureSynchronizationContext(); CreateDavResource(); }); RegisterPropertyChangePropagation(_model, nameof(_model.CalenderUrl), nameof(CalenderUrl)); RegisterPropertyChangePropagation(_model, nameof(_model.UserName), nameof(UserName)); RegisterPropertyChangePropagation(_model, nameof(_model.Password), nameof(Password)); RegisterPropertyChangePropagation(_model, nameof(_model.EmailAddress), nameof(EmailAddress)); RegisterPropertyChangePropagation(_model, nameof(_model.UseAccountPassword), nameof(UseAccountPassword)); RegisterPropertyChangePropagation(_model, nameof(_model.UseWebDavCollectionSync), nameof(UseWebDavCollectionSync)); }