【发布时间】:2015-04-15 05:20:26
【问题描述】:
我有一个列表框,它的数据上下文设置为一个集合。在后台,我正在获取数据并将其提供给绑定元素。但这并没有体现在我的设计中。代码如下。
<ListBox Name="StatusListBox"
DataContext="{Binding StatusCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我给出的页面定义中
DataContext="{Binding StatusViewModel, RelativeSource={RelativeSource Self}}"
d:DataContext="{Binding Source={d:DesignData Source=/Data/SampleData.json, Type=data:DataSource}}"
在 cs 文件中,我有一个 statusviewmodel,我给出了 statusviewmodel,即我获取的内容。
public ObservableDictionary StatusViewModel
{
get
{
return this.statusViewModel;
}
}
private async void GetStatusOnline()
{
HttpWebRequest request = HttpWebRequest.Create(requestURI) as HttpWebRequest;
WebResponse response = await request.GetResponseAsync();
ObservableCollection<string> statusCollection = new ObservableCollection<string>();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string textcontent = reader.ReadToEnd();
Debug.WriteLine(textcontent);
DataSource dataSource = new DataSource();
this.StatusViewModel["StatusCollection"] = dataSource.GetStatusCollection(textcontent);
}
}
private ObservableCollection<Status> _statusCollection = new ObservableCollection<Status>();
public ObservableCollection<Status> StatusCollection
{
get
{
return this._statusCollection;
}
}
public IEnumerable<Status> GetStatusCollection(string textcontent)
{
JsonObject jsonObject = JsonObject.Parse(textcontent);
JsonArray jsonArray = jsonObject["items"].GetArray();
foreach (JsonValue value in jsonArray)
{
StatusCollection.Add(new Status(value.GetString()));
}
return StatusCollection;
}
示例json数据为
{
"items": [
"Hi\n",
"This is my new status. How is this?\n",
"This is thrid line."
]
}
【问题讨论】:
-
您已将页面的 DataContext 设置为 ViewModel,但您的方法 GetStatusCollection 对不在 DataContext 中的变量进行操作i>,因此它可能不会对 UI 产生影响。您是否可以与该问题共享一个工作示例?
-
@Romasz 在导航中,我将 StatusViewModel 设置为具有键,并将值设置为可观察集合。该集合具有状态对象。 DataContext 中没有什么?我可以分享代码。但这几乎就是我在这里所拥有的。
-
你试过
?所以你在导航方法中设置它。如果我有一个工作样本,我会更容易查看它。
标签: json windows-phone-8 binding