将ListBox绑定到表

时间:2011-04-15 14:46:21

标签: data-binding windows-phone-7 listbox

我正在开发Windows Phone 7应用程序。

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

ID | Name | Description

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

如何在ListBoxItem中存储 ID ?我该如何找回它?

2 个答案:

答案 0 :(得分:1)

假设您有一个与每一行相关联的数据对象(我们现在将其称为MyDataRow),请将ListBox的 ItemsSource 属性设置为{{{ 1}}实例。然后,在ListBox中,将 DisplayMemberPath 设置为名称。这将使ListBox绑定到您的实际数据对象,但实际显示名称属性的值。

当您处理 SelectionChanged 事件时, SelectedItem 属性的值将是您的MyDataRow类的实例,因此您可以使用代码获取ID像这样:

MyDataRow

答案 1 :(得分:1)

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

<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; }
}
相关问题