1

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

4

2 回答 2

2

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

于 2009-05-28T19:11:42.257 回答
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)。但是话又说回来,您可能会使用不同的方法。

于 2009-05-28T19:12:57.713 回答