我的xaml页面上有ListBox,名为MainListBox。我可以获得被选中的索引,但是如何从所选项目中获取数据?
我的MainListBox_SelectionChanged:
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int noteID1 = MainListBox.SelectedIndex+1;
if (MainListBox.SelectedIndex != null)
{
//I can get the index that get selected,
Debug.WriteLine(MainListBox.SelectedIndex);
}
MainListBox.SelectedIndex = -1;
}
我的XAML:
<ListBox x:Name="MainListBox" Margin="6,0,0,0" ItemsSource="{Binding Items}" SelectionChanged="MainListBox_SelectionChanged" Height="578" VerticalAlignment="Bottom" Grid.ColumnSpan="3">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock x:Name="ItemText" Text="{Binding noteName}" Margin="-2,-13,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock x:Name="DetailsText" Text="{Binding noteText}" Margin="10,-6,0,3" Style="{StaticResource PhoneTextSubtleStyle}"/>
<TextBlock x:Name="noteIdText" Text="{Binding noteID}" Margin="10,-6,0,3" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
请有人指导我,谢谢。 :)
答案 0 :(得分:6)
你试过MainListBox.SelectedItem吗?
var data = MainListBox.Selecteditem as [类绑定到列表框的类型];
答案 1 :(得分:1)
假设您绑定Items
的{{1}}属性的ListBox
对象是类ItemsSource
的对象集合。然后,在选择更改后的回调中使用以下内容:
MyDataObject
答案 2 :(得分:1)
感谢大家快速回复。
最后我明白了。
if (MainListBox.SelectedItem != null)
{
var data = MainListBox.SelectedItem as Notes;
NavigationService.Navigate(new Uri("/DetailsPage.xaml?noteID=" + data.noteID, UriKind.Relative));
}
答案 3 :(得分:0)
SelectedItem是Items中的实体。您可以直接转换为实体类型。
SelectedItem也必须位于WP7中的System.Windows.Control.ListBox中。这是文档: http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.aspx http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.selecteditem.aspx
答案 4 :(得分:0)
private void MyList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataModel data = (sender as ListBox).SelectedItem as DataModel;
// data.MyPropertyHere;
}