我正在开发windows phone 8应用程序。并使用循环选择器功能作为城市名称的绑定列表。
我以json格式获取城市名单。
现在我需要将结果绑定到循环选择器作为数据源
XAML CODE
<DataTemplate x:Key="NumberTemplate">
<Grid>
<TextBlock
Text="{Binding }"
FontSize="54"
FontFamily="{StaticResource PhoneFontFamilySemiBold}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</DataTemplate>
<toolkit:LoopingSelector
x:Name="loopselector"
Grid.Column="1"
Margin="12"
Width="128"
ItemSize="128,128"
ItemTemplate="{StaticResource NumberTemplate}">
<toolkit:LoopingSelector.DataSource>
<local:NumbersDataSource Minimum="0" Maximum="50" />
</toolkit:LoopingSelector.DataSource>
</toolkit:LoopingSelector>
CS CODE
public void Citybind()
{
try
{
string city_nameurl = "http://xxxxxxx.yyyyyy";
WebClient city_namewc = new WebClient();
city_namewc.DownloadStringAsync(new Uri(city_nameurl), UriKind.Relative);
city_namewc.DownloadStringCompleted += city_namewc_DownloadStringCompleted;
}
catch (Exception ex)
{
}
}
void city_namewc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
try
{
var city_name = e.Result;
loopselector.ItemTemplate = city_name; /* Error Cannot convert string to system.windows.dataTemplat*/
}
答案 0 :(得分:0)
您可以使用流行的Json转换器库NewtonSoft.Json来实现此目的。只需将它从Visual Studio中的Nuget包管理器添加到您的项目中即可。然后在你的city_namewc_DownloadStringCompleted处理程序中,写下这样的内容:
var city_name = e.Result; ObservableCollection cityList = JsonConvert.DeserializeObject&gt;(city_name);
loopselector.ItemTemplate = city_name; loopselector.ItemSource = cityList;
此代码段假设您的json只是一个简单的字符串列表。如果不同,则需要调整类型&lt;&gt;您提供给JsonConvert进行反序列化。希望这有帮助!