1

您好,我已经构建了一个WebService从 SQL 返回数据的函数:

    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;
    }

现在我尝试在columnsof中显示数据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>

但我仍然有黑屏。

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

4

2 回答 2

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>

也访问下面的链接,这样你就可以得到更多的想法

如何在windows phone中绑定数据

如何将字符串列表数据绑定到 WP7 中的 ListBox

希望它对你有用......

于 2013-10-15T14:00:03.467 回答
1

我在这里可能错了,但是 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列表框。

    将e.ResultListado2中的内容复制到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>
    

于 2013-10-15T14:50:18.877 回答