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>

但我仍然有黑屏。

有人会帮我解决这个问题吗?

WP8 - 在网格的列中显示 Web 服务的结果

首先你创建一个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之前的回答时,他基本上在告诉你同样的事情。

  1. 创建一个名为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;
        }
     }
    
  2. 在可访问的地方列出这些Items

    在该类旁边,在页面类中,创建该列表的实例:

    List<Item> itemlist = new List<Item>();
    
  3. 将数据复制到该List<Item>,然后将该列表设置为列表框的itemsSource

    在里面Listado2将 e.Result 中的内容复制到itemlist中:

    private void Listado2(object sender, ListadoCompletedEventArgs e)
    {
       ...copying from e.Result into itemList...
       listB.itemsource = itemList;
    }
    
  4. 然后将 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>