您好我有一个名为GameEngine.cs的课程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameEnginee
{
public class GameEngine
{
private int life;
public String Life { get { return life.ToString(); } }
public GameEngine(int life)
{
this.life = life;
}
}
}
1)我使用表达式混合并将GameEngine.cs添加到解决方案资源管理器中并单击“构建项目”。
2)然后在“数据”选项卡下,有“创建样本数据”或“创建数据源”。我首先尝试创建数据源,但我找不到gameengine。然后我尝试了创建样本数据,我可以找到游戏引擎。
3)所以我“创建样本数据” - >来自班级 - >我选择了游戏引擎。
然后我插入了一个文本框并将其绑定到GameEngine.Life的DataContext
当我运行项目时,文本框中没有任何内容。
所以我尝试插入一个事件处理程序whenGridLoaded,其中我初始化了一个新的游戏实例。 GameEngine游戏=新GameEngine(100);
我预计100会出现在textBox中但没有发生任何事情。
修改
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
命名空间GameEnginee {
公共类GameEngine:INotifyPropertyChanged
{
private int life;
public int Life
{
get
{
return life;
}
}
public GameEngine(int life)
{
this.life = life;
}
public void StartGame()
{
NotifyPropertyChanged("Life");
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
}
答案 0 :(得分:1)
在INotifyPropertyChanged
课程中实施GameEngin
界面,并按照article进行操作。
根据上述文章(INotifyPropertyChanged
),您OnProperyChanged("Life")
财产的Set
部分必须Life
。它可以将此属性的更改通知您的UI
。
例如测试这样的东西:
public class GameEngin:INotifyPropertyChanged
{
private int _life;
public int Life
{
get
{
return _life;
}
set
{
_life = value;
OnProperyChanged("Life")
}
}
public GameEngine()
{
this.Life = 3; // For Test
}
//---------------------------------------------------------------
public event PropertyChangedEventHandler PropertyChanged;
private void OnProperyChanged(string info)
{
if (PropertyChanged != null)
{
var handler= PropertyChanged ;
handler(this, new PropertyChangedEventArgs(info));
}
}
}