WP8 - 在网格的列中显示 Web 服务的结果
本文关键字:显示 Web 服务 结果 网格 WP8 | 更新日期: 2023-09-27 18:35:31
你好,我构建了一个从SQL返回数据的WebService
:
public void ListadoWebService()
{
// InitializeComponent();
ServiceTours.ServiceToursClient cl = new ServiceTours.ServiceToursClient();
cl.ListadoCompleted += new EventHandler<ListadoCompletedEventArgs>(Listado2);
cl.ListadoAsync();
}
private void Listado2(object sender, ListadoCompletedEventArgs e)
{
listB.ItemsSource = e.Result;
}
现在我尝试以grid
columns
显示数据。我以为它可以将数据binding
到特定列作为textblock
,但即使数据以e.Result
返回,我也无法显示数据。
我尝试了以下操作:
<ListBox x:Name="listB">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding id}" Grid.Column="0" />
<TextBlock Text="{Binding name}" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但我仍然有黑屏。
有人会帮我解决这个问题吗?
首先你创建一个getter setter方法,如
public class test
{
public string Id{get;set;}
public string Name{get;set;}
public test(string id, string name)
{
Id=id;
Name=name;
}
public test()
{
}
than add your take one generc like
List<Test> lst=new List<test>();
private void Listado2(object sender, ListadoCompletedEventArgs e)
{
lst.add(new test(id,name));
listB.itemsource=lst;
}
<ListBox x:Name="listB">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Id}" Grid.Column="0" />
<TextBlock Text="{Binding Name}" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
也访问下面的链接,以便您可以获得更多想法
HOw 在 Windows Phone 中绑定数据
如何将字符串列表数据绑定到 WP7 中的列表框
希望它能为你工作.....
我在这里可能是错的,但是一旦 Listado2 结束,e.Result 就不会消失了吗?
我并不完全专业,但我要做的是我会从结果中复制东西,我可以保存更长时间。
当我读到MansinhDodiya之前的回答时,他基本上在告诉你同样的事情。
-
创建一个名为
Item
的类,其中包含两个属性(public string Id{get;set;}
是一个属性)还有更多方法可以做到这一点,其中之一是转到该页面的代码隐藏(.xaml.cs并在那里创建类,另一种是在同一命名空间中创建新类,第三,设置新的命名空间并添加使用)。
因此,在页面的 .xaml.cs 中创建这样的类:
class Item { public string Id {get;set;} //this is the first property i would later bind public string Name {get;set;} //this is the second property public Item(string id, string name) // this is the contructor, every time // an instance of Item is created, this // method is called { Id = id; Name = name; } }
-
在可访问的地方列出这些
Items
在该类旁边,在页面类中,创建该列表的实例:
List<Item> itemlist = new List<Item>();
-
将数据复制到该
List<Item>
,然后将该列表设置为列表框的itemsSource
。在里面
Listado2
将 e.Result 中的内容复制到itemlist
中:private void Listado2(object sender, ListadoCompletedEventArgs e) { ...copying from e.Result into itemList... listB.itemsource = itemList; }
-
然后将 xaml 绑定定义更改为属性的名称 - 在我的例子中:
<ListBox x:Name="listB"> <ListBox.ItemTemplate> <DataTemplate> <Grid> ..omitted... <TextBlock Text="{Binding Id}" Grid.Column="0" /> <TextBlock Text="{Binding Name}" Grid.Column="1" /> </Grid> </DataTemplate> </ListBox.ItemTemplate>