0

好的,我需要将此代码中的标签传递到下一页,但我不知道如何访问它。有人可以帮忙吗。

代码 :

 <ListBox x:Name="AgendaList" Width="450" Height="520" Margin="10" SelectionChanged="event_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image  Width="100" Stretch="Uniform" HorizontalAlignment="Center" Source="/SuperAgenda;component/Images/calendar.jpg" />
                            <TextBlock  Text="{Binding Title_}" Tag="{Binding EventId_}" />

                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

我正在使用按钮将其发送过来,因此我需要知道如何获取标签数据并让按钮将其发送到下一页。我的按钮看起来像这样,但它不发送任何数据:

private void viewEvent_Click(object sender, RoutedEventArgs e)
    {



        string uri = String.Format("/Views/Event_View/Event_View.xaml?id={0}", clickedLink.Tag);
        NavigationService.Navigate(new Uri(uri, UriKind.Relative));

    }

任何帮助都会非常感谢。

4

3 回答 3

0

在此处使用该Tag属性是多余的,因为DataTemplate在绑定控件中包含对象的所有属性。使用DataContext检索对象。在您的中添加一个Tap事件(以便用户可以点击图像或文本):StackPanelDataTemplate

private void StackPanel_Tap( object sender, GestureEventArgs e ) {
    int eventid = (( sender as StackPanel ).DataContext as MyObject).EventId_;

    string uri = String.Format("/Views/Event_View/Event_View.xaml?id={0}", eventid);
    NavigationService.Navigate(new Uri(uri, UriKind.Relative));
}

然后使用NavigationContextin payen's answer 检索接收页面上的值。

于 2013-01-03T14:41:12.340 回答
0

实际上,要在页面之间传输数据,您应该使用 PhoneApplicationService 类。

 PhoneApplicationService.Current.State["field"] = someField;

在您的按钮点击/点击事件中。

然后,在您的下一页上使用 cast 获取该值

someField = (fieldType)PhoneApplicationService.Current.State["field"];

那是你要的吗?

于 2013-01-03T12:32:06.457 回答
0

只需使用您导航到的页面的Navigation Context属性。

if (this.NavigationContext.QueryString.ContainsKey("ProductId"))
{
    productID = this.NavigationContext.QueryString["ProductId"];
}
else
{
    productID = App.Current.Resources["FeaturedProductID"].ToString();
}
于 2013-01-03T12:33:49.960 回答