Неправильная ориентация всплывающих окон. Его 90 градусов повернут - PullRequest
0 голосов
/ 27 октября 2010

Привет! Я создал всплывающее окно, используя класс Popup в Silverlight.Я написал класс типа UserControl и добавил этот пользовательский контроль во всплывающее окно, используя метод Child класса Popup.

Ниже приведен код XAML моего класса UserControl

<UserControl x:Class="MyProject.PopupWindowContent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"            
Foreground="{StaticResource PhoneForegroundBrush}" UseLayoutRounding="False" Cursor="Hand">

    <Grid Height="355" Name="grid1" Width="527.5">
        <Image Height="355" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="527" Source="/MyProject;component/dialog_bg.png" UseLayoutRounding="True" />
        <Image Height="194" HorizontalAlignment="Left" Margin="13,87,0,0" Name="image2" Stretch="Fill" VerticalAlignment="Top" Width="502.5" Source="/MyProject;component/dialog_box_1.png" />
        <Image Height="46" HorizontalAlignment="Left" Margin="25.25,35.25,0,0" Name="image3" Stretch="Fill" VerticalAlignment="Top" Width="49.75" Source="/MyProject;component/dialog_logo.png" />
        <TextBlock Height="40" HorizontalAlignment="Left" Margin="153.25,38.75,0,0" Name="popupHeading" Text="TextBlock" VerticalAlignment="Top" Width="212" TextAlignment="Center" FontWeight="Bold" FontSize="26" />
    <Button Content="Submit" Height="71" HorizontalAlignment="Left" Margin="130.75,265.75,0,0" Name="buttonOne" VerticalAlignment="Top" Width="132.25" BorderThickness="1" FontSize="18" Foreground="Black">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="White" Offset="0" />
                    <GradientStop Color="#FF06EF06" Offset="1" />
                </LinearGradientBrush>
            </Button.Background>
        </Button>
        <Button BorderThickness="1" Content="Cancel" FontSize="18" Foreground="Black" Height="71" HorizontalAlignment="Right" Margin="0,265.75,142,0" Name="buttonTwo" VerticalAlignment="Top" Width="132.25">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="White" Offset="0" />
                    <GradientStop Color="#FFEF0606" Offset="1" />
                </LinearGradientBrush>
            </Button.Background>
        </Button>
    <TextBox Height="162.75" HorizontalAlignment="Left" Margin="18,108.25,0,0" Name="popupBody" Text="TextBox" VerticalAlignment="Top" Width="480.5" Background="{x:Null}" FontSize="20" Foreground="White" BorderThickness="0" />
</Grid>

Я установил этот PopupWindowContent для моего всплывающего окна, используя следующий код в моем файле xaml

        Popup popUnWin = new Popup();
        popUnWin.Child = new PopupWindowContent();
        popUnWin.IsOpen = true;

Проблема в том, что когда я выполняю этот код, ориентация всплывающего окна соответствует портретной, а мое приложение - альбомное.Таким образом, всплывающее окно выглядит повернутым на 90 градусов.Может кто-нибудь сказать, пожалуйста, как я могу это исправить?

С наилучшими пожеланиями

Ответы [ 4 ]

2 голосов
/ 07 августа 2012

Я обнаружил, что если вы вставите всплывающее окно в код xaml страницы, то ориентация будет выполнена правильно.

0 голосов
/ 08 февраля 2011

Я видел несколько предложений по добавлению всплывающего окна в визуальное дерево.Я попытался добавить его в свой xaml, и он все еще не вращался, но вы можете попробовать его.

0 голосов
/ 11 июля 2011

Не поворачивайте всплывающее окно, а поместите рамку внутри всплывающего окна и загрузите содержимое в рамку.

Я заставил его работать так:

//In .xaml
<Popup x:Name="myPopup">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="480" />
        </Grid.RowDefinitions>

        <Border x:Name="popupBorder"/>
    </Grid>
</Popup>

//In .xaml.cs
popupBorder.Child = new MyPopupPage(); //MyPopupPage is the "Windows Phone Landscape Page"
myPopup.IsOpen = true;
0 голосов
/ 27 октября 2010

Вы устанавливаете SupportedOrientation на каждой странице вашего приложения или только на первой?Я думаю, что есть странная вещь, что если вы установите его на первой странице, некоторые вещи будут уважать это, но другие (например, всплывающее окно) смотрят на поддерживаемые ориентации активной страницы?

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