使用点击事件无效,将数据从数据库发送到另一个页面

时间:2015-07-20 11:20:44

标签: c# xaml windows-phone-8.1

我要做的是,在搜索事件并点击它之后,必须将用户重定向到另一个名为事件页面的页面,其中将显示所点击事件的所有详细信息。但它无法正常工作我得到以下错误

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;
}

1 个答案:

答案 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);
}