Rea*_*rld 1 c# data-binding xaml windows-phone-8
我希望我的 xaml 中的文本字段绑定到一个属性PlayerData.Instance.data.MyXP类结构是这样的
class PlayerData
{
public static PlayerData Instance = new PlayerData();
public UserData data {get;set;}
}
class UserData
{
public int MyXP {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释我如何(如果有的话)我可以做到这一点。我从关于 SO 的问题中尝试了多种方法,但没有找到任何成功的方法。我遇到的最大问题是 PlayerData.Instance.data 是在创建 UI 后分配的,所以我可能需要在 UserData 上设置某种通知事件,但在 MyXP 上也需要,因为我希望 UI 在 xp 更改时更新。
通常,当您使用单例时,使用它的每个对象都会获得 Instance 属性的副本。您可以在包含该引用的 View Model 对象上创建一个属性,然后您将绑定到该属性。例如:
public class MyViewModel : ViewModelBase {
public PlayerData PlayerData {
get { return iPlayerData; }
set {
iPlayerData = value;
OnPropertyChanged( "PlayerData" );
}
}
private PlayerData iPlayerData;
// Other properties & code
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的 XAML 中,假设您已经将Window对象的DataContext属性绑定到视图模型对象,您将使用如下内容:
<TextBlock Text="{Binding Path=PlayerData.data.MyXP}" />
Run Code Online (Sandbox Code Playgroud)
您可能还需要指定一个对象来实现IValueConverter接口以正确格式化 int MyXP 属性。
(请注意,如果您有多线程环境,则如图所示,您的代码不是单例模式的有效实现。请参阅本文并查看标题“在 C# 中实现单例模式的第四种方式:多线程单例模式”一节如果您的代码是多线程的)。
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |