【问题标题】:How to raise a property change event to trigger other properties如何引发属性更改事件以触发其他属性
【发布时间】:2018-11-27 03:00:26
【问题描述】:

我不确定我的标题是否正确。我有两个绑定到 2 个文本框的双重属性,我想在一个属性更改时计算它们的总数。 RemainingBalance 属性是我计算并显示总数的地方。我认为下面的代码将计算 UI 中的 GiftSold 或 GiftUsed 值何时更改。我什至尝试过双向模式,但它仍然不起作用。

    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>

【问题讨论】:

  • 如果我理解您的问题正确,您需要像这样使用 UpdateSourceTrigger&lt;TextBox Text="{Binding GiftSold, UpdateSourceTrigger=PropertyChanged}"/&gt;,据我所知,在 WPF 中绑定是 TwoWay by默认。
  • 是的,谢谢你...效果很好
  • 错别字 RemainBalance = RemaingBalance

标签: c# wpf inotifypropertychanged


【解决方案1】:
    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");
}

试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2011-01-29
    • 2011-06-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    相关资源
    最近更新 更多