none
Holdfunktion RRS feed

  • Frage

  • Hallo Forumuser,

    habe folgendes Problem:

    Ich arbeite an einer App für meinen Blog und habe dazu auch den YouTube Feed eingebunden, habe es allerdings so gemacht, dass die Videos direkt starten wenn man auf das jeweilige Video im Feed drückt. Ich wollte jetzt mithilfe eines Context Menüs, welches ich mit dem Silverlight Toolkit erstellt habe, die Möglichkeit eröffnen per Tap and Hold auf den jeweiligen Feed die YouTube Mobile Seite im Browser zu öffnen. Da ich für den normalen Artikel Feed sowieso schon den Browser nutze wollte ich die gleiche Xaml Seite nutzen. Ich habe jetzt allerdings das Problem, dass wenn ich Hold auf den Feed mache der Link noch gar nicht weitergeben wurde, sodass wenn ich auf den Browser leite dieser mir angibt, dass die Uri Value leer sein, was ja sogar stimmt.

    Jetzt meine Frage, wie kann ich es schaffen, dass per Tap and Hold noch vor dem Context Menü der Link als Variable abgespeichert wird? Ich hoffe es ist verständlich was ich meine.

    Hier mal mein Ansatz, der so allerdings nicht funktionierte:

     private void feedListBox2_Hold(object sender, System.Windows.Input.GestureEventArgs e)
            {
                ListBox listBox2 = sender as ListBox;
    
                if (listBox2.SelectedItem != null)
                {
                    // Get the SyndicationItem that was tapped.
                    SyndicationItem sItem = (SyndicationItem)listBox2.SelectedItem;
    
                    // Set up the page navigation only if a link actually exists in the feed item.
                    if (sItem.Links.Count > 0)
                    {
                        // Get the associated URI of the feed item.
                        Uri uri = sItem.Links.FirstOrDefault().Uri;
                        String Link2 = uri.ToString();
    
                        (App.Current as App).VideoLink = Link2;
    
                    }
    
    
    
                }
            }
    
            private void MenuItem_Click(object sender, RoutedEventArgs e)
            {
    
                NavigationService.Navigate(new Uri("/Browser.xaml?link1=" + (App.Current as App).VideoLink, UriKind.Relative));
    
            }

    und dann im Browser:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                string myUriValue1 = NavigationContext.QueryString["link1"];
                base.OnNavigatedTo(e);
                Uri newuri1 = new Uri(myUriValue1);
    
                webBrowser1.Navigate(newuri1);
    
            }

    Hoffe das ihr eine Idee habt, danke schon mal ;)

    Freitag, 13. Juli 2012 08:43

Antworten

  • Für alle die auch dieses Problem haben, ihr müsst noch etwas in dem Xaml Code tun, was auch auf dem Toolkit basiert, ich poste euch einfach den Code mit dem es jetzt bei mir geklappt hat:

    Xaml (hier allerdings mit HTML eingefügt):

    <controls:PanoramaItem Header="Videos">
                    <ListBox Name="feedListBox2" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="feedListBox2_SelectionChanged">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel VerticalAlignment="Top">
                                    <toolkit:GestureService.GestureListener>
                                        <toolkit:GestureListener Hold="GestureListener_Hold" />                                    
                                    </toolkit:GestureService.GestureListener>                                
                                    <TextBlock TextDecorations="Underline" FontSize="24" Name="feedTitle2" TextWrapping="Wrap" Margin="12,0,0,0" HorizontalAlignment="Left" Foreground="{StaticResource PhoneAccentBrush}" Text="{Binding Title.Text, Converter={StaticResource RssTextTrimmer}}" local:TiltEffect.SuppressTilt="True" />
                                    <TextBlock Name="feedSummary2" TextWrapping="Wrap" Margin="12,0,0,0" Text="{Binding Summary.Text, Converter={StaticResource RssTextTrimmer}}" />
                                    <TextBlock Name="feedPubDate2" Foreground="{StaticResource PhoneSubtleBrush}" Margin="12,0,0,10" Text="{Binding PublishDate.DateTime}" />                                
                                    <toolkit:ContextMenuService.ContextMenu>
                                        <toolkit:ContextMenu x:Name="OpenInBrowser">
                                            <toolkit:MenuItem Header="Im Browser öffnen" Click="MenuItem_Click" />
                                        </toolkit:ContextMenu>
                                    </toolkit:ContextMenuService.ContextMenu>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>

    Und C#:

    private void GestureListener_Hold(object sender, Microsoft.Phone.Controls.GestureEventArgs e)
            {
                var holdItem = (sender as StackPanel).DataContext;
                if (holdItem != null)
                {
                    // Get the SyndicationItem that was tapped.
                    SyndicationItem sItem = (SyndicationItem)holdItem;
    
                    // Set up the page navigation only if a link actually exists in the feed item.
                    if (sItem.Links.Count > 0)
                    {
                        // Get the associated URI of the feed item.
                        Uri uri = sItem.Links.FirstOrDefault().Uri;
                        String Link2 = uri.ToString();
    
                        (App.Current as App).VideoLink = Link2;
    
                    }
    
    
    
                }
    
            }
    
           private void MenuItem_Click(object sender, RoutedEventArgs e)
            {
    
                NavigationService.Navigate(new Uri("/Browser.xaml?link1=" + (App.Current as App).VideoLink, UriKind.Relative));
    
            }
    
    Den Browser habe ich wie oben belassen ;)

    Sonntag, 15. Juli 2012 02:31