【问题标题】:Windows Phone 8 BindingWindows Phone 8 绑定
【发布时间】:2013-12-30 15:14:09
【问题描述】:

我有一个 Windows Phone 8 Pivot 应用程序,其中包含自动生成的MainViewModel 绑定机制。

我已更改 MainViewModel 类以满足我的需要,并更改了 MainPage.xaml 标记,以便它绑定到正确的属性。

一切都好。

现在 - 我有一个调用 Web 服务的类和一个在接收到数据时触发的回调方法:

private void GetSigns_Completed(object sender, OpenReadCompletedEventArgs e)
{
    using (var sr = new StreamReader(e.Result))
    {
        var data = sr.ReadToEnd();
        var result = JsonConvert.DeserializeObject<SignViewModel>(data);
    }
}

如您所见,我没有返回或使用 result 对象填充任何内容,因为我不知道该怎么做。 MainViewModel 的属性有私有的setters

public ObservableCollection<SignViewModel> Signs { get; private set; }
public ObservableCollection<TweetsViewModel> Tweets { get; private set; }

每个对象都有一个NotifyPropertyChange 事件。

那么我如何填充SignsTweets 对象并在从Web 服务检索数据时使整个绑定自动工作?如何使UI/Mainpage.xaml 与Web 服务类和MainViewModel 类通信?

【问题讨论】:

  • 服务返回项目的集合还是仅返回一个对象? SignViewModel 里面有什么?
  • Signs.Add(result) 也许?
  • 它返回一个标志集合。所以它会像Signs = result;

标签: c# binding windows-phone-8


【解决方案1】:

为了解决这个问题,我只是将setters 更改为公开SignsTweets。一旦它到位,NotifyPropertyChange 就会发挥它的魔力并自动绑定到视图。魔法!我想知道为什么微软开发人员将 setter 设为私有.....

【讨论】:

  • 不只是 setter 是私有的。在 C# 中,一切都自动默认为私有。除了默认为内部的类
  • 是的,我知道。我只是想知道为什么微软将 ViewModel 对象设为私有,因为我猜想,在 ViewModel 类之外更新它们的可能性更大。
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2014-04-18
  • 2013-09-23
  • 2013-04-11
相关资源
最近更新 更多