我正在为Wp8.1 / WinRt开发一款通用应用。
对于手机,我有一个gridview,显示包含stackpanels的网格为'ItemTemplate'。
网格具有明确指定的边距,如下所示:
<GridView ItemsSource="{Binding CurrentItems}">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="140" Margin="6,0,6,6" x:Name="I_WANT_TO_ADJUST_MY_MARGINS">
<Border Background="{StaticResource PhoneAccentBrush}"/>
<Grid Height="140" Width="140">
<Image VerticalAlignment="Top" Margin="10" Width="100" Height="100" Source="{Binding Converter={StaticResource ImageConverter}}" HorizontalAlignment="Center" />
</Grid>
<Grid VerticalAlignment="Bottom">
<Border Background="{StaticResource PhoneBackgroundBrush}" Opacity="0.6"/>
<TextBlock Text="{Binding DisplayedName}" Style="{StaticResource BodyTextBlockStyle}" Margin="3" TextWrapping="Wrap"/>
</Grid>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
在6英寸的手机上看起来很棒,给我一个3列的外观。但是在一部小手机上,当我得到两列时,右边的负空间量是可怕的。
如果屏幕较小,我希望能够使网格的边距 I_WANT_TO_ADJUST_MY_MARGINS 更大?
注意:此布局专门用于在手机上运行。
答案 0 :(得分:2)
这就是我解决它的方法:
将DataTemplateSelector添加到页面资源。将上述两个模板指定为属性,如下所示:
<local:WpDataTemplateSelector x:Key="WpDataTemplateSelector" BigScreenTemplate="{StaticResource BigScreen}" SmallScreenTemplate="{StaticResource SmallScreen}"></converters:WpDataTemplateSelector>
在DataTemplateSelector中使用以下内容确定屏幕宽度:Window.Current.Bounds.Width
在GridView上指定 ItemTemplateSelector 属性