根据分辨率更改通用应用程序中的XAML保证金

时间:2014-07-07 01:07:36

标签: c# xaml windows-phone-8.1

我正在为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 更大?

注意:此布局专门用于在手机上运行。

1 个答案:

答案 0 :(得分:2)

这就是我解决它的方法:

  1. 将两个数据窗口(大/小屏幕)添加到资源字典中 - 我使用了页面资源,但您可以使用任何页面资源。
  2. 将DataTemplateSelector添加到页面资源。将上述两个模板指定为属性,如下所示:

    <local:WpDataTemplateSelector x:Key="WpDataTemplateSelector" BigScreenTemplate="{StaticResource BigScreen}" SmallScreenTemplate="{StaticResource SmallScreen}"></converters:WpDataTemplateSelector>

  3. 在DataTemplateSelector中使用以下内容确定屏幕宽度:Window.Current.Bounds.Width

  4. 在GridView上指定 ItemTemplateSelector 属性