2014-02-17 3 views
1

Я работаю на Windows Phone 8 app и имеют вид изображения, как это в XAML:Показать изображение в полном экране

<Image Name="Image" 
     Grid.Row="0" 
     Visibility="Collapsed" 
     Width="Auto" 
     Height="Auto" 
     Tap="Image_tap" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Margin="1,1,1,1"/> 

Теперь я это событие называется Tap="Image_tap", когда я нажать на изображение я хочу показать то же самое изображение в полноэкранном режиме без бара сверху и снизу, как это сделать?

+0

Возможно, вы можете перейти к специальному FullScreen.xaml только с вашим изображением, переданным в контексте? Или у вас две сетки, одна с изображением и вторая с Ui, тогда вы можете изменить их видимость. – Romasz

+0

@Romasz вы можете показать мне пример? – Goofy

+0

Подождите некоторое время. Вы знаете, как передать контекст во время навигации? – Romasz

ответ

5

Нижняя панель ApplicationBar и верхняя панель SystemTray. Если вы создаете новую страницу без ApplicationBar и с SystemTray.IsVisible на false, у вас будет полноэкранная страница. Теперь вместо того, чтобы иметь Grid в корне, поместите только один Image, и вы можете использовать эту страницу в качестве полноэкранного просмотра.

<phone:PhoneApplicationPage 
    x:Class="SimpleApp.FullScreenPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    mc:Ignorable="d" 
    shell:SystemTray.IsVisible="False"> 

    <Image Name="myImage" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
     Stretch="Uniform"/> 

</phone:PhoneApplicationPage> 

В MainPage где вы крана изображения:

private void myImg_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    string context = ((sender as Image).Source as BitmapImage).UriSource.ToString(); 
    NavigationService.Navigate(new Uri(String.Concat("/Page1.xaml?context=", context), UriKind.RelativeOrAbsolute)); 
} 

В Fullscreenpage:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    string context = this.NavigationContext.QueryString["context"]; 
    myImage.Source = new BitmapImage(new Uri(context, UriKind.RelativeOrAbsolute)); 
    base.OnNavigatedTo(e); 
} 
+0

Если вы можете показать мне, как выглядит страница XAML? – Goofy

+0

Там вы идете, только следуя шагам, которые я написал уже. –

+0

Хорошо, спасибо, пожалуйста, подождите, подождите – Goofy

7

Альтернативный подход, без прохождения деталей изображения между страницами, чтобы отобразить всплывающее окно:

private void HandleTapImage(object sender, GestureEventArgs e) 
{ 
    var myPopup = new Popup 
    { 
     Child = new Image 
     { 
      Source = ((Image) sender).Source, 
      Stretch = Stretch.UniformToFill, 
      Height = Application.Current.Host.Content.ActualHeight, 
      Width = Application.Current.Host.Content.ActualWidth 
     } 
    }; 
    myPopup.IsOpen = true; 
} 

(Выберите значение Strech, наиболее подходящее для ваших нужд). При таком подходе, однако, вам необходимо вручную скрыть ApplicationBar и SystemTray, если они есть, в методе HandleTapImage. Вы также должны позаботиться о том, чтобы скрывать всплывающее окно и показывать бары снова.

+0

i получить этот поп не удалось найти? что такое имя ссылки сборки? – Goofy

+0

+1 приятное решение. Я добавил только скобки и информацию о скрытии содержимого страницы, если это необходимо. – Romasz

+0

'System.Windows.Controls.Primitives' –

Смежные вопросы