我正在开发Windows Phone 7应用程序。
我有一个包含以下列的表:
ID | Name | Description
我想在ListBox中显示表格中的所有名称。我想确定用户何时选择一行并获取其ID。
如何在ListBoxItem中存储 ID ?我该如何找回它?
答案 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; }
}