适用于所有分辨率的Windows Phone 8.1自适应应用

时间:2015-08-26 18:34:34

标签: c# windows-phone-8

我希望以前没有问到这个问题,我无法在任何地方找到一个简单的解决方案...... 我正在开发一个简单的Windows Phone 8.1音板,但如果分辨率大于VXGA,则网格和按钮太小而且放错了。我读到了这个:Taking Advantage of Large-Screen Windows Phones   但我不太了解。

有谁知道如何帮助我?

1 个答案:

答案 0 :(得分:0)

您需要实现xaml视觉状态。这些视觉状态具有自适应触发器(如显示分辨率)和设置器(例如,如果自适应触发器触发,则将按钮高度设置为50)。  就像这样:

<Page
x:Class="VisualStates.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VisualStates"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup>
            <VisualState>
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0"></AdaptiveTrigger>
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="AdaptiveButton.Width" Value="80"></Setter>
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Button x:Name="AdaptiveButton" VerticalAlignment="Center" HorizontalAlignment="Center" Width="0">Test</Button>
</Grid>

如果没有视觉状态,自适应按钮的宽度为0,但由于视觉状态,它的设置为80。 当然这是一个不实用的例子,你应该使用blend for visual studio,因为它甚至可以为你提供简单实现这些视觉状态的ui。但在练习之前,你应该谷歌“visualstatemanager类”并搜索更多的例子。 修改 您还可以在 pageloaded 方法中检查窗口宽度和高度,然后例如更改属性,如:

double displaywidth = App.Current.Host.Content.ActualWidth;
if(displaywidth >= 300) {}//set local variable display width and than do sth