我要做的是,在搜索事件并点击它之后,必须将用户重定向到另一个名为事件页面的页面,其中将显示所点击事件的所有详细信息。但它无法正常工作我得到以下错误
An exception of type 'System.InvalidCastException' occurred but was not handled in user code
Additional information: Unable to cast object of type 'System.Boolean' to type 'NGO_Volunteer_Comm_Platform_v1._0.DataModel.Event'.
我之前尝试过类似的东西,但它没有使用点击事件
以下是我的代码:
XAML:
<Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,72,19,0">
<!--<ScrollViewer>-->
<ListBox Background="Black" x:Name="listBox" FontSize="26" Margin="0,10,0,0" LayoutUpdated="listbox_layoutUpdate" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="txtEventName" TextWrapping="Wrap" Text="{Binding}" Tapped="txtEventName_Tapped" IsTapEnabled="True" Foreground="White" Width="300" Margin="10,15,0,0" Height="55"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--</ScrollViewer>-->
</Grid>
xaml.cs:
private void txtEventName_Tapped(object sender, TappedRoutedEventArgs e)
{
Frame.Navigate(typeof(EventPage), e.Handled);
//MessageDialog md = new MessageDialog("open");
//await md.ShowAsync();
}
应将用户导航到xaml.cs的页面:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var b = (Event)e.Parameter;
eventid = b.Id;
txtName.Text = b.EventName;
txtDate.Text = b.Date.Date.ToString();
//txtTime.Text = b.StartingTIme.TimeOfDay.ToString();
txtLocation.Text = b.Location;
txtDescription.Text = b.Desc;
}
答案 0 :(得分:1)
e.Handled是一个bool属性,表示事件是否应向下或向上传播到可视树。如果您不希望事件传播,则将此属性设置为true以表示事件已处理。
你需要发送你的数据,而不是这个bool。
为此,您应该获取DataContext并将其作为参数发送。
private void txtEventName_Tapped(object sender, TappedRoutedEventArgs e)
{
Event ev = (sender as TextBlock).DataContext as Event;
Frame.Navigate(typeof(EventPage), ev);
}