我有一个包含列表框的Pivot项目模板
<controls:Pivot x:Name="MainPivot" ItemsSource="{Binding PivotItemHeaders}" Title="CLASS TIMETABLE" >
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}"/>
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<ListBox x:Name="Events" ItemsSource="{Binding allEventItems}" ItemTemplate="{StaticResource EventDisplay2}"/>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
在后面的代码中,我想访问该列表框的selectedItem,但我无法“获取”到列表框中,因为ity(可能)在模板中
即
this.NavigationService.Navigate(new Uri("/View/EventEdit.xaml?selectedEvent=" + Events.SelectedItem, UriKind.Relative));
无法识别“事件”列表框。
Assuminh我可以传递获取对象并将其作为参数传递,我可以使用哪些代码来检索它
我知道它的开头 protected override void OnNavigatedTo(NavigationEventArgs e) { if(NavigationContext.QueryString.ContainsKey(“SelectedEvent”)) {
但我不确定从参数
中提取对象的语法/代码欣赏我如何从此列表框中获取selectedItem以及获取对象传递的代码
答案 0 :(得分:2)
不是尝试访问ListBox,而是可以在值发生变化时使用SelectionChanged
事件:
<ListBox x:Name="Events"
ItemsSource="{Binding allEventItems}"
ItemTemplate="{StaticResource EventDisplay2}"
SelectionChanged="Event_SelectionChanged" />
然后在你的代码背后:
private void Event_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.selectedEvent = (EventItem)e.AddedItems[0];
}
您可以使用NavigationContext.QueryString["selectedEvent"]
访问该值,但只能在导航查询字符串中存储字符串。如果列表框当前绑定到对象,则需要选择一个键,然后使用该键从第二页中找到该事件。