[英]Windows 8 Xaml- Changing GridView layout based on orientation
So im pretty sure this should be a quick easy fix, yet I cant seem to figure it out. 因此,我很确定这应该是一种快速简便的修复方法,但我似乎无法弄清楚。 Im trying to change the layout of my GridView based on device orientation, all within Xaml.
我试图在Xaml中基于设备方向更改GridView的布局。 For Example:
例如:
Horizontal(scrolls horizontally) 水平(水平滚动)
Item1 item2 item3 项目1项目2项目3
item4 item5 item6 item4 item5 item6
Vertical (scrolls vertically) 垂直(垂直滚动)
item1 项目1
item2 item2
item3 项目3
item4 项目4
item5 项目5
item6 项目6
<StackPanel Orientation="Horizontal" RequestedTheme="Light">
<GridView TabIndex="1" Grid.Row="2" ItemClick="LooksDetailItemClick"
IsItemClickEnabled="True" IsSwipeEnabled="False"
Padding="10,10,10,10" SelectionMode="Single"
ItemsSource="{Binding subItems}" Height="auto" Width="auto" HorizontalAlignment="Left"
VerticalAlignment="Top" Background="WhiteSmoke" HorizontalContentAlignment="Left" >
<GridView.ItemTemplate>
<DataTemplate>
<Grid x:Name="InnerGrid" Grid.Column="1" Height="auto" Width="364">
<Grid.RowDefinitions>
<RowDefinition Height="0"/>
<RowDefinition Height="280"/>
</Grid.RowDefinitions>
<Grid x:Name="OtherGrid" Grid.Row="2" Grid.Column="2" Margin="29,0,35,0">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<!--TitleBox-->
<RowDefinition Height="354*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="195*"/>
<!-- Right Box Text -->
<ColumnDefinition Width="130*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding name}" VerticalAlignment="Top" TextWrapping="Wrap" HorizontalAlignment="Left"
Width="auto" Height="auto" Margin="0,0,-198,0" />
<Image Source="{Binding imagePath}" Grid.Column="0" Grid.Row="1" Stretch="Fill" Height="212" Width="141"
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,0,20,0"/>
<StackPanel Grid.Column="2" Grid.Row="2" Orientation="Vertical">
<TextBlock Text="Style:" FontSize="24" Margin="0, 10, 0, 0"/>
<TextBlock Text="10000023" FontSize="10.667" Margin="0, 10, 0, 0"/>
<TextBlock Text="{Binding price}" FontSize="24" Margin="0, 10, 0, 0"/>
<TextBlock Text="Color:" FontSize="24" Margin="0, 10, 0, 0"/>
<GridView Height="130" ItemsSource="{Binding colors}">
<GridView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Color_Image}" Width="40" Height="40" HorizontalAlignment="Left"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</StackPanel>
</Grid>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Vertical" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
</StackPanel>
Unfortunately, you can't do it all within XAML except via something like a LayoutAwarePage, which is no longer supported. 不幸的是,除了通过LayoutAwarePage之类的东西(不再受支持)之外,您无法在XAML中完成所有操作。 As such, you'll need to create your own implementation of that, which would not be an "all within XAML" solution.
这样,您将需要创建自己的实现,这将不是XAML的“全部解决方案”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.