【问题标题】:how do i get a wpf window to refresh?如何让 wpf 窗口刷新?
【发布时间】:2010-10-29 16:06:33
【问题描述】:

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

【问题讨论】:

    标签: wpf refresh


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如何实现 INotifyPropertyChanged,并将余额和 betlist 绑定到您正在使用的控件?

      类似:

      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)。但话又说回来,您可能会使用不同的方法。

      【讨论】:

        猜你喜欢
        • 2011-06-22
        • 2015-01-08
        • 2010-11-03
        • 2012-12-20
        • 2011-03-30
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多