C# 如何在windows phone中从列表框中选择项目?
我有一份数据清单, 每一行将显示一个数据并有一个按钮,当我单击显示的数据时,我想将一些数据发送到上一页,当我单击同一行中的按钮时,我想将相同的数据发送到下一页 我的Xaml代码C# 如何在windows phone中从列表框中选择项目?,c#,windows-phone-7,C#,Windows Phone 7,我有一份数据清单, 每一行将显示一个数据并有一个按钮,当我单击显示的数据时,我想将一些数据发送到上一页,当我单击同一行中的按钮时,我想将相同的数据发送到下一页 我的Xaml代码 <ListBox x:Name="List" HorizontalAlignment="Left" Height="612" Margin="6,7,0,0" VerticalAlignment="Top" Width="443" SelectionChanged="List_SelectionChanged_1"
<ListBox x:Name="List" HorizontalAlignment="Left" Height="612" Margin="6,7,0,0" VerticalAlignment="Top" Width="443" SelectionChanged="List_SelectionChanged_1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="420" Height="50">
<TextBlock x:Name="tbName" Width="400" Height="44" FontSize="22" FontWeight="Bold" Text="{Binding Name}" />
<Button x:Name="DetailButton" Height="44" Width="20" Content=">" FontWeight="Bold" Click="DetailButton_Click_1"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的DetailButton\u Click\u 1事件处理程序是
private void List_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
Display selectedItemData = (sender as ListBox).SelectedValue as Display;
NavigationService.Navigate("/Page1.xaml",selectedItemData);
}
private void DetailButton_Click_1(object sender, RoutedEventArgs e)
{
Display selectedItemData = (sender as ListBox).SelectedValue as Display;
NavigationService.Navigate("/page3.xaml", selectedItemData);
}
对于*List\u SelectionChanged\u 1*,一切正常,但执行时出现异常
Display selectedItemData = (sender as ListBox).SelectedValue as Display;
在单击Detail按钮时,我得到一个异常,一个空异常
An exception of type 'System.NullReferenceException' occurred in ExpenseApp.DLL but was not handled in user code
我应该怎么做才能使它工作?在执行代码之前,请尝试验证selectvalue是否为空:
private void DetailButton_Click_1(object sender, RoutedEventArgs e)
{
If ((sender as ListBox).SelectedValue != null){
Display selectedItemData = (sender as ListBox).SelectedValue as Display;
NavigationService.Navigate("/page3.xaml", selectedItemData);
}
}
根本问题是按钮单击事件的发送者是按钮,而不是列表框 还要注意,单击数据模板上的按钮不一定会在列表中选择该项。尝试获取单击项目的数据上下文,并使用该上下文而不是。选择EdItem
private void DetailButton_Click_1(object sender, RoutedEventArgs e)
{
var clickedUIElement = sender as Button;
if (null == clickedUIElement) { Return; }
Display selectedItemData = clickedUIElement.DataContext as Display;
if(null != selectedItemData)
{
NavigationService.Navigate("/page3.xaml", selectedItemData);
}
}
您的代码将具有空引用,因为您不能将按钮强制转换为列表框