【发布时间】: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,只是推荐它) -
谢谢你,看起来很有用,是的,我认为这是问题所在。