【问题标题】:C# - XAML doesnt re-binding the changesC# - XAML 不会重新绑定更改
【发布时间】:2014-12-26 12:00:24
【问题描述】:

我正在开发一个小项目..一个游戏,但一开始只是控制台游戏,所以决定使用 xaml 使用 UI 来制作它..这里我遇到了这个问题 - 除了它之外,everythink 似乎都可以正常工作没有重新绑定我所做的更改。我有继承 INotifyPropertyChanged 的​​ BaseModelView 类

public class BaseViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string prop)
    {
        if (this.PropertyChanged != null)
        {
            var propertyChangedArg = new PropertyChangedEventArgs(prop);
            this.PropertyChanged(this, propertyChangedArg);
        }
    }
}

也适用于使用 ObservableCollection 的集合,但它不会重新绑定更改..

我认为问题来自这里,因为我没有在每个类的每个属性上调用 OnPropertyChanged,我为整个类调用它但不知道......就像那样

public Player Player
{
    get { return this.player; }
    set
    {
        this.player = value;
        this.OnPropertyChanged("Player");
    }
 }

这里我会链接repo,反正它不是一个隐藏的项目,它意味着开源,也许可以更容易地找到问题-http://goo.gl/mFgCXI

我希望有人可以帮助我,因为我卡了好几天,不知道如何解决它以继续前进..

谢谢。

【问题讨论】:

  • 这只会在你改变实际播放器时引发OnPropertyChanged,但不会在Player 上的属性发生变化时引发
  • 如果你想要一个简单的方法来实现PropertyChanged,你可能想检查一下:github.com/Fody/PropertyChanged(我不隶属于 Fody,只是推荐它)
  • 谢谢你,看起来很有用,是的,我认为这是问题所在。

标签: c# xaml


【解决方案1】:

在 Github 上看到了您的代码。您需要在将绑定到的所有类上实现 INotifyPropertyChanged。此外,每个将被绑定的属性都应该引发 OnPropertyChanged 通知。

我看到您已绑定到 Monstor & Hero 类的属性,但它的属性(绑定在 UI 中)不会引发 OnPropertyChanged 通知。

【讨论】:

    【解决方案2】:

    尝试将绑定模式设置为 TwoWay 并再次测试。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 2020-02-06
      • 2016-08-07
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多