Как изменить текстовое поле друг друга при изменении значения (MVVM) - PullRequest
2 голосов
/ 13 июня 2019

Как я могу изменить свои текстовые поля в зависимости от других?

Раньше у меня была кнопка с Icommand, и теперь текстовые поля должны меняться при изменении другого текстового поля

    <TextBox Grid.Column="2" Grid.Row="2" Text ="{Binding Decimal, UpdateSourceTrigger = PropertyChanged}"/>
    <TextBox Grid.Column="2" Grid.Row="3" Text ="{Binding Dual, UpdateSourceTrigger = PropertyChanged}"/>
    <TextBox Grid.Column="2" Grid.Row="4" Text ="{Binding Hexa, UpdateSourceTrigger = PropertyChanged}"/>
    <TextBox Grid.Column="2" Grid.Row="5" Text ="{Binding Octa, UpdateSourceTrigger = PropertyChanged}"/>

Итак, в общем, я хочу преобразовать числа в другой системе, независимо от того, в каком текстовом поле пишет пользователь, как я могу это сделать?

Свойство позади выглядит так:

    public string Decimal
    {
        get { return Number.Decimal; }
        set
        {
            if (Number.Decimal != value)
            {
                Number.Decimal = value;
                RaisePropertyChanged("Decimal");
            }
        }
    }

1 Ответ

4 голосов
/ 13 июня 2019

Я предполагаю, что Number является вашей моделью - она ​​хранит число внутри и правильно управляет преобразованием чисел.

Самым простым решением было бы просто вызвать обновление каждого соответствующего свойства при касании одного из них в ViewModel.

private void NumbersChanged()
{
    RaisePropertyChanged(nameof(Decimal));
    RaisePropertyChanged(nameof(Dual));
    RaisePropertyChanged(nameof(Hexa));
    RaisePropertyChanged(nameof(Octa));
}

public string Decimal
{
    get { return Number.Decimal; }
    set
    {
        if (Number.Decimal != value)
        {
            Number.Decimal = value;
            NumbersChanged();
        }
    }
}

public string Hexa
{
    get { return Number.Hexa; }
    set
    {
        if (Number.Hexa != value)
        {
            Number.Hexa = value;
            NumbersChanged();
        }
    }
}
//etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...