Если вы действительно новичок в Windows Phone 7, вы можете прекратить использовать событие «Click» и вместо этого использовать событие ListBox.SelectionChanged.Если вы привязаны к List<MyObject>
, вы можете сделать следующее:
В вашем XAML:
<ListBox SelectionChanged="NavigateToMyDetail" ... >
Тогда в коде сзади вы получите что-то вроде этого:
private void NavigateToMyDetail(object sender, SelectionChangedEventArgs e)
{
// Make sure that the ListBox change wasn't due to a deselection
if(e.AddedItems != null && e.AddedItems.Count == 1)
{
MyObject selectedItem = (MyObject)e.AddedItems[0];
// Now you have access to all your MyObject properties
// and you can pass that to your new page as a parameter
NavigationService.Navigate(new Uri("DisplayItem.xaml?ItemID=" + selectedItem.id.ToString(), UriKind.Relative));
}
}
И этот идентификатор можно получить с помощью следующего кода (возможно, в вашем методе «OnNavigatedTo»).
string myItemID = null;
if(this.NavigationContext.QueryString.ContainsKey("ItemID"))
myItemID = NavigationContext.QueryString["ItemID"];
Надеюсь, это поможет.Другой способ получить его - дать свой список ListBox: Name, а затем сослаться на него в вашем обработчике Click, например:
private void MyClickHandler(object sender, System.Windows.RoutedEventArgs e)
{
MyObject selectedObject = (MyObject)MyListBoxName.SelectedItem;
}