Data binding 将列表框绑定到表

Data binding 将列表框绑定到表,data-binding,windows-phone-7,listbox,Data Binding,Windows Phone 7,Listbox,我正在开发一个WindowsPhone7应用程序 我有一个包含以下列的表: ID | Name | Description 我想在列表框中显示表中的所有名称。我想确定用户何时选择一行并获取其ID 如何在ListBoxItem中存储ID?如何检索它呢?假设您有一个与每一行相关联的数据对象(我们现在称之为MyDataRow),将列表框的ItemsSource属性设置为MyDataRow实例的集合。然后,在列表框中,将显示成员路径设置为名称。这将使列表框绑定到实际数据对象,但实际显示Name属性的值

我正在开发一个WindowsPhone7应用程序

我有一个包含以下列的表:

ID | Name | Description
我想在列表框中显示表中的所有名称。我想确定用户何时选择一行并获取其ID


如何在ListBoxItem中存储ID?如何检索它呢?

假设您有一个与每一行相关联的数据对象(我们现在称之为
MyDataRow
),将列表框的ItemsSource属性设置为
MyDataRow
实例的集合。然后,在列表框中,将显示成员路径设置为名称。这将使列表框绑定到实际数据对象,但实际显示Name属性的值

处理SelectionChanged事件时,SelectedItem属性的值将是
MyDataRow
类的一个实例,因此可以使用如下代码获取ID:


var id=((MyDataRow)\u myListBox.SelectedItem.id

使用绑定是最好的方法。请参见下面的我的代码:

<ListBox x:Name="List1">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding ID}" />
                <TextBlock Text="{Binding Name}" Grid.Column="1" />
                <TextBlock Text="{Binding Description}" Grid.Column="2" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

<TextBlock Grid.Row="2" Text="{Binding ElementName=List1,Path=SelectedItem.ID}" />

//CSharp代码:

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        Collection<Entity> source = new Collection<Entity> { 
            new Entity{ID = "1", Name = "Name1", Description = "This is Name1"},
            new Entity{ID = "2", Name = "Name2", Description = "This is Name2"},
            new Entity{ID = "3", Name = "Name3", Description = "This is Name3"},
        };

        List1.ItemsSource = source;
    }
}

public class Entity
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}
public部分类主页:PhoneApplicationPage
{
//建造师
公共主页()
{
初始化组件();
集合源=新集合{
新实体{ID=“1”,Name=“Name1”,Description=“This is Name1”},
新实体{ID=“2”,Name=“Name2”,Description=“This is Name2”},
新实体{ID=“3”,Name=“Name3”,Description=“This is Name3”},
};
List1.ItemsSource=来源;
}
}
公共类实体
{
公共字符串ID{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
}

和。。我在哪里可以学会这样做?我只有一个用XML文件制作的数据源。这应该会有帮助:谢谢,它正在工作。但我还有一个问题。在该表中,我有另一列指示语言(en,es,…),如何将where子句设置为ItemsSource?或者我可以查看一下吗?好的,我发现了: