微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将ListBox绑定到表

如何解决将ListBox绑定到表

| 我正在开发Windows Phone 7应用程序。 我有一个包含以下各列的表:
ID | Name | Description
我想在列表框中显示表中的所有名称。我想确定用户何时选择一行并获取其ID。 如何将ID存储在ListBoxItem中?我该如何找回呢?     

解决方法

假设您有与每一行关联的数据对象(我们现在将其称为
MyDataRow
),请将ListBox的ItemsSource属性设置为
MyDataRow
实例的集合。然后,在您的ListBox中,将DisplayMemberPath设置为Name。这将使ListBox绑定到您的实际数据对象,但实际显示Name属性的值。 当处理SelectionChanged事件时,SelectedItem属性的值将是
MyDataRow
类的实例,因此您可以使用以下代码获取ID:
var id = ((MyDataRow)_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; }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。