您需要實現INotifyPropertyChanged
並設置TextBlock
的DataContext
到您的實例:
class PlayerData
{
public static PlayerData Instance = new PlayerData();
private UserData data = new UserData();
public UserData Data
{
get { return data; }
set { data = value; }
}
}
class UserData : INotifyPropertyChanged
{
private int myXP = 0;
public int MyXP
{
get { return myXP; }
set
{
myXP = value;
RaiseProperty("MyXP");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaiseProperty(string property = null)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
在XAML中,你可以做這樣的:
<TextBlock Name="myExp" Text="{Binding Data.MyXP}" Grid.Row="2"/>
,並使其工作,你需要將TextBlock
的DataContext
設置爲您的實例:
myExp.DataContext = PlayerData.Instance;
然後,您可以自由chenge你的XP,你應該看到它,它的用戶界面:
PlayerData.Instance.Data.MyXP = 1000;
您也可以讓你的PlayerData : INotifyPropertyChanged
如果你有其他地方的數據綁定。希望這個例子會告訴你它是如何工作的。
+1,只是在OP不使用MVVM的情況下添加解決方案。 – Romasz
工程很好。感謝您的建議! –