桌面设备和手机上的不同xaml

时间:2016-04-20 08:04:26

标签: c# xaml win-universal-app

有没有办法为不同的设备使用不同的xaml元素属性?例如,我想在桌面设备和手机上应用不同的边距。也许有另一种方法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点:

视觉状态管理器

您可以将它用于XAML中的较小更改,例如基于不同的分辨率:

<VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="ResponsiveLayout">
            <VisualState x:Name="NarrowLayout">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Property="MyGrid.Margin" Value="5" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="WideLayout">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="1024" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Property="MyGrid.Margin" Value="15" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

不同的XAML

将它用于不同设备的完全不同的布局,还有更多可能性:

  1. 为不同的设备系列创建名称为 DeviceFamily- [concreteDevice] 的文件夹,并创建新的 XAML视图(如果您想保留代码隐藏,请查看对于所有设备都是一样的,如果你也想要不同的代码隐藏,那么对于你想要做出不同的所有页面,使用空白页 - 相同的下一个可能性(对于许多页面来说是个不错的选择): Example

  2. 为您的解决方案中的不同设备系列创建新的 XAML视图以及完全后缀,对于一个或两个已修改的页面可能更容易,例如: enter image description here

答案 1 :(得分:0)

你应该关注VisualStateManager class

您还可以查看有关如何使基于XAML的应用程序响应的更多信息this blog post for

  

使用内置的AdaptiveTrigger作为VisualState的StateTrigger   具有MinWindowHeight和/或MinWindowWidth属性,可视状态   可以根据应用程序窗口的高度/宽度进行更改。