您好我已经构建了一个从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;
}
现在,我尝试在columns
grid
中显示数据。我认为它可以将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>
但我仍然有黑屏。
有人会帮我解决这个问题吗?
答案 0 :(得分:2)
首先制作一个像
一样的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 to bind data in windows phone
How can I data bind a list of strings to a ListBox in WP7
希望它对你有用.....
答案 1 :(得分:1)
我可能在这里错了,但是一旦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>