WP7: Выполнение NavigationService.Navigate из обработчика щелчка MenuItem из контекстного меню на WP7 - PullRequest
1 голос
/ 05 сентября 2011

У меня есть контекстное меню в моем приложении, и когда я нажимаю на MenuItem, я хочу перейти на другую страницу. У меня проблема в том, что навигация работает, но я не вижу загрузки другой страницы, так как контекстное меню остается открытым на всю длину клика. Когда я отвечаю, контекстное меню закрывается, и затем я вижу страницу, на которую я перешел. Какой правильный способ справиться с этим? Как будто мне нужно сказать ContextMenu закрыться при обработке клика, а затем перейти на нужную страницу.

обновлено с моим кодом обработчика:

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    MenuItem menuItem = sender as MenuItem;
    if (menuItem != null)
    {   
        App.appData.URL = menuItem.Header.ToString();
        NavigationService.Navigate(new Uri("/BrowserPage.xaml", UriKind.Relative));            
    }
}

XAML код:

<local:MyListBox x:Name="messageListBox" 
                                 ItemsSource="{Binding ChannelMessages}" 
                                 MaxHeight="480"
                                 >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <toolkit:ContextMenuService.ContextMenu>
                                    <toolkit:ContextMenu ItemsSource="{Binding URLs}">
                                        <toolkit:ContextMenu.ItemTemplate>
                                            <DataTemplate>
                                                <toolkit:MenuItem Header="{Binding}" Click="MenuItem_Click"/>
                                            </DataTemplate>
                                        </toolkit:ContextMenu.ItemTemplate>
                                    </toolkit:ContextMenu>
                                </toolkit:ContextMenuService.ContextMenu>
                                <TextBlock x:Name="MessageTextbox" Text="{Binding MessageFrom}" TextWrapping="Wrap">
                                        <TextBlock.Foreground>
                                            <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
                                        </TextBlock.Foreground>
                                </TextBlock>
                                <TextBlock x:Name="FromTextBox" Text="{Binding MessageText}" Margin="0,0,0,19" Width="456" FontSize="21.333" TextWrapping="Wrap"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </local:MyListBox>

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 01 декабря 2011

Помогает ли настройка e.Handled = true в вашем обработчике событий клика?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...