WP7 - 当列表框在itemtemplate中时访问列表框中的选定项目

时间:2011-06-16 06:01:11

标签: windows-phone-7 listbox itemtemplate

我有一个包含列表框的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以及获取对象传递的代码

  • 感谢

1 个答案:

答案 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"]访问该值,但只能在导航查询字符串中存储字符串。如果列表框当前绑定到对象,则需要选择一个键,然后使用该键从第二页中找到该事件。