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