如何让wpf窗口刷新?

时间:2009-05-28 18:01:51

标签: wpf refresh

我正在构建一个简单的轮盘赌应用程序。玩家(UI)将赌注列表放在一起,并将它们提交给要评估和支付的表对象。我有代码可以工作,游戏过程顺利进行。问题是转弯后我无法获得玩家余额(文本块)或下注列表(listview)进行更新。是否有某种全局窗口刷新命令我缺少,或者我是否必须手动设置其中每一个以某种方式更新?

2 个答案:

答案 0 :(得分:2)

WPF可以自动为您更新这些值,但是您必须在事情发生变化时通知它。通常,这是通过在模型对象上使用DependencyProperties来完成的,但也可以通过实现INotifyPropertyChanged来完成。在任何一种情况下,当您更新属性的值时,都会调用PropertyChanged事件; WPF在绑定到某个值时自动订阅此事件,并在发生更改时更新UI。如果没有此通知,WPF将不会检查对象中的值是否已更改,并且您将看不到屏幕上反映的更改。

答案 1 :(得分:0)

如何实现INotifyPropertyChanged,并将余额和下注列表绑定到您正在使用的控件上?

类似的东西:

public class Player : INotifyPropertyChanged
    {
        private int _balance;

        #region Properties

        public int Balance
        {
            get { return this._balance; }
            set
            {
                if (this._balance != value)
                {
                    this._balance = value;
                    NotifyPropertyChanged("Balance");
                }
            }
        }

        public BindingList<Bet> BetList { get; set; }

        #endregion // Properties

        private void NotifyPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }

    public class Bet
    {
        // some code
    }

对于绑定列表,您不需要实现任何内容,因为它实现了一个接口,该接口通知对绑定到的任何内容(IRaiseItemChangedEvents)的更改。但话又说回来,你可能会采用不同的方法。