Как вызвать событие изменения свойства, чтобы вызвать другие свойства - PullRequest
0 голосов
/ 27 ноября 2018

Я не уверен, что мой заголовок правильный.У меня есть два двойных свойства, которые я связываю с 2 текстовыми полями, и я хотел бы рассчитать их общее количество, когда изменяется одно свойство.Свойство RemainingBalance - это место, где я вычисляю и отображаю итог.я думал, что код ниже будет рассчитывать, когда значение GiftSold или GiftUsed изменилось в пользовательском интерфейсе.Я даже попробовал режим twoway, но он все еще не работает.

    private double _giftSold;
    public double GiftSold
    {
        get { return _giftSold; }
        set
        {
            if (value != _giftSold)
            {
                _giftSold = value;
                OnPropertyChanged("GiftSold");
                OnPropertyChanged("RemainingBalance");
            }
        }
    }

    private double _giftUsed;
    public double GiftUsed
    {
        get { return _giftUsed; }
        set
        {
            if (value != _giftUsed)
            {
                _giftUsed = value;
                OnPropertyChanged("GiftUsed");
                OnPropertyChanged("RemainingBalance");
            }
        }
    }

    public double RemainingBalance
    {
        get { return GiftSold - GiftUsed; }
    }

вот мой xaml

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Gift Sold  "/>
    <TextBox Text="{Binding GiftSold, Mode=TwoWay}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
    <TextBlock Text="Gift Used  "/>
    <TextBox Text="{Binding GiftUsed, Mode=TwoWay}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
    <TextBlock Text="Remain Balance  "/>
    <TextBlock Text="{Binding RemainBalance}"/>
</StackPanel>

1 Ответ

0 голосов
/ 27 ноября 2018
    private double _giftSold;
public double GiftSold
{
    get { return _giftSold; }
    set
    {
        if (value != _giftSold)
        {
            _giftSold = value;
            CalculateRemainingBalance();
            OnPropertyChanged("GiftSold"); 
        }
    }
}

private double _giftUsed;
public double GiftUsed
{
    get { return _giftUsed; }
    set
    {
        if (value != _giftUsed)
        {
            _giftUsed = value;
                CalculateRemainingBalance();
            OnPropertyChanged("GiftUsed");
        }
    }
}

private double _RemainingBalance;
public double RemainingBalance
{
    get { return _RemainingBalance }
}

private void CalculateRemainingBalance()
{
_RemainingBalance = GiftSold - GiftUsed;
 OnPropertyChanged("RemainingBalance");
}

Попробуйте это.

...