旋转后调整网格大小 Windows phone 8.1

Posted

技术标签:

【中文标题】旋转后调整网格大小 Windows phone 8.1【英文标题】:Resize grid after rotation Windows phone 8.1 【发布时间】:2015-12-05 05:27:42 【问题描述】:

[![在此处输入图像描述][1]][1]ListView 中的面板大小有问题。我在 GridView 中有 StackPanel,旋转后我想将此 gridview 调整为整个页面,但旋转后 stackPanel 的宽度与他在纵向模式下的宽度相同。这是我的代码。 但是当我在横向模式下启动应用程序时一切正常,并且调整了网格的大小。

<Page
x:Class="KlientWP.VypisZakazek"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:KlientWP"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Loaded="Page_Loaded" SizeChanged="Page_SizeChanged">
<Page.Background>
    <SolidColorBrush Color="ThemeResource PhoneImagePlaceholderColor"/>
</Page.Background>

<Grid x:Name="ContentRoot" Margin="0,9.5,0,0">

    <ScrollViewer>
        <Pivot Title="Přehled databáze" HorizontalAlignment="Stretch"  Margin="0,0,0,0">

            <PivotItem Header="Zakázky" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" Margin="10,0,20,10" >

                <ListView SelectionMode="None" x:Name="ListBox1" Margin="0,0,-0.167,0.167"
HorizontalAlignment="Stretch"
 ItemsSource="Binding" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid x:Name="grdTsk" Opacity="1" Margin="0,0,0,10" Width="1500" HorizontalAlignment="Stretch" Background="#FF302E2E"  ManipulationMode="All" Tapped="grdTsk_Tapped" >
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="20"/>
                                    <RowDefinition Height="30"/>
                                </Grid.RowDefinitions>
                                <FlyoutBase.AttachedFlyout>
                                <MenuFlyout>
                                    <MenuFlyoutItem Text="Detail zakázky" Click="Detail" />
                                </MenuFlyout>
                            </FlyoutBase.AttachedFlyout>

                            <TextBlock Grid.Row="1" Text="Binding nazev1" Width="1500" FontSize="22" TextWrapping="Wrap" HorizontalAlignment="Stretch" Margin="5,0,0,0" Visibility="Visible" FontWeight="Light" Foreground="White"/>
                                <!--<StackPanel>

                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Margin="0,0,0,0" >
                                        <TextBlock Text="Binding nazev" FontSize="22" TextWrapping="Wrap" Margin="5,0,0,0" Visibility="Visible" FontWeight="Light" Foreground="White"/>

                                </StackPanel>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,0">


                                        <TextBlock x:Name="predmetTb"  Text="Binding zakazka" FontSize="18" Margin="5,0,0,0" TextWrapping="Wrap" />
                                        <TextBlock Text="Binding kod_firmy" FontSize="18" TextWrapping="Wrap" Margin="15,0,0,0" Foreground="#FFFFF413" />




                                </StackPanel>
                            </StackPanel>-->
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

        </PivotItem>


    </Pivot>
    </ScrollViewer>
</Grid>

绑定:

       CultureInfo culture = new CultureInfo("cs-CZ");

            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<dataInfo>));
            MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
            var obj = (List<dataInfo>)ser.ReadObject(stream);
  List<dataInfo> VypisZakazekli = new List<dataInfo>();


            VypisZakazekli.Clear();

            foreach (dataInfo di in obj)
            

                string iZakazka = "ID: " + di.zakazka;
                string sNazev = di.nazev;
                string sKod = "Firma: " + di.kod_firmy;
                string sStatus = "Status: " + di.status_v;
                string sDruh = di.druh_zakazky;
                VypisZakazekli.Add(new dataInfo(iZakazka, sNazev, sKod, sStatus, sDruh));
            


            this.ListBox1.ItemsSource = VypisZakazekli;
    

【问题讨论】:

为什么你没有在 StackPanel 中使用 Grid RowDefinitions ,然后对每个元素使用 Horizo​​ntalAlignment="Stretch" 。 StackPanel 不支持。 是一样的...Grid RowDefinitions 不起作用:/ 使用这个 Stil 不起作用。这是在旋转 i.stack.imgur.com/anzJ6.png 之前,这是在旋转 i.stack.imgur.com/MlX1L.png 之后。但是当我使用横向启动应用程序时,它运行良好i.stack.imgur.com/6UBrJ.png 与绑定类定义共享整页代码。 【参考方案1】:

尝试将此添加到您的列表视图中:

<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>

【讨论】:

以上是关于旋转后调整网格大小 Windows phone 8.1的主要内容,如果未能解决你的问题,请参考以下文章

带有自动边距的网格 - Windows Phone 8.1 Silverlight

Windows Phone 8 全景布局

Windows phone 8.1 裁剪矩形

Windows Phone 8.1 上的 RadioButtons 绑定

Windows Phone 8中缺少ButtonBase.Click

在 Windows 窗体控件中调整大小以及窗体调整大小