Как передать Связанные свойства как параметры без ручной настройки - PullRequest
2 голосов
/ 14 октября 2019

Вот мой App.xaml.cs

protected override Task OnInitializeAsync(IActivatedEventArgs args) {
        Container.RegisterInstance(SessionStateService);
        Container.RegisterInstance(NavigationService);

        Container.RegisterType<IUserRepository, UserRespository>(new ContainerControlledLifetimeManager());
        Container.RegisterType<UserSettingsContext>(new ContainerControlledLifetimeManager());
        Container.RegisterType<IUserSettings, UserSettings>(new ContainerControlledLifetimeManager());

        var userSettings = this.Container.Resolve<UserSettingsContext>();
        userSettings.Database.EnsureCreated();

        return base.OnInitializeAsync(args);
    }

Это мой UserSettings

using using Prism.Windows.Validation;

public class UserSettings : ValidatableBindableBase, IUserSettings {
    private string _firstName;
    public string FirstName {
        get { return _firstName; }
        set { SetProperty(ref _firstName, value); }
    }

    private string _lastName;
    public string LastName {
        get { return _lastName; }
        set { SetProperty(ref _lastName, value); }
    }

    private UserType _userType;
    public UserType UserType {
        get { return _userType; }
        set { SetProperty(ref _userType, value); }
    }

    private string _username;
    [Required(ErrorMessage = "Required.")]
    public string Username {
        get { return _username; }
        set { SetProperty(ref _username, value); }
    }

    private string _password;
    [Required(ErrorMessage = "Required.")]
    public string Password {
        get { return _password; }
        set { SetProperty(ref _password, value); }
    }
}

ViewModel :

public class TestViewModel : UserSettings {
    private UserSettings user;
    public UserSettings User => user;

    public async void SaveSettings() {
        //It will work with this line
        // var user = new UserSettings() {
            // Username= this.Username,
            // Password= this.Password,
            // UserType= this.UserType,
            // FirstName= this.FirstName,
            // LastName= this.LastName
        // };

        //null properties
        await loginService.SaveUserSettings(user);
    }
}

Когда я пытался передать 'user' , свойства равны нулю, даже пользовательские входные данные из пользовательского интерфейса (просмотр), это будет работать, если я установлю UserSettings используя приведенный выше код, но я хочу упростить это без этого, как я могу это сделать?

Спасибо

1 Ответ

1 голос
/ 14 октября 2019

Вы хотите написать await loginService.SaveUserSettings(this);, потому что this кажется целью, которая заполнена данными.

...