WP7 Silverlight App可扩展性可扩展性

时间:2010-08-12 05:55:20

标签: silverlight windows-phone-7

我现在正在编写一些需要绝对大小的WP7应用程序,具体取决于显示设备。这意味着应用程序大小需要为656(w)×480(h),这对于同时具有shell:SystemTray.IsVisible="True"shell:ApplicationBar IsVisible="True"的WP7来说是完美的。从可能的800 x 480开始,这两个使用的棒都需要144个,所以我在这方面做得很好。

在PC上,我会使用更大尺寸的版本,例如720x540。

然而,如果iPhone-> iPad显示出MSFT可能的收入来源(以及鲍尔默重新投资平板电脑业务),我将假设我们会看到平板电脑 - 大小的单位很快就会出现在WP7操作系统中。

此外,WP7的分辨率可能会达到400x240。

我希望我的应用程序能够立即用于不同尺寸的设备,基于上述尺寸(656(w)乘480(h)或其缩放版本) - 而不是仅仅是更改一组值以重新发布应用。 注意:我不使用<Grid/><StackPanel/> - 我不能。应用程序中的每一件事都是绝对定位的,这是有目的的。

所以这里的问题是 - 是否有一些值,我可以阅读有关我的应用运行的设备的屏幕分辨率大小?我查看了reference,但是找不到这样的东西。

3 个答案:

答案 0 :(得分:7)

您可以通过以下方式确定可用的显示尺寸: -

var width = Application.Current.Host.Content.ActualWidth;
var height = Application.Current.Host.Content.ActualHeight;

尽管取向如此,但仍保持不变。使用RootVisual的维度可能也会起作用,但如果出于商业原因,RootVisual具有固定大小,那么这将无效。

上面的ActualWidthActualHeight属性专门用于通知应用程序主机设备提供的视口大小。

答案 1 :(得分:3)

据我所知,平板电脑(平板)风格的设备将运行完整版的Windows 7(不是Windows Phone 7),但在顶部有一个附加软件层,可以在平板环境中更好/更简单/更容易地使用。

WP7设备将推出HVGA屏幕(480x320),微软已明确表示将来不会有任何其他尺寸。 (他们已经学会了尝试支持多种屏幕尺寸的教训。)这意味着您无需担心400x240。

回答你的实际问题:
您可以访问RenderSize的{​​{1}}来获取屏幕大小,如下所示:

RootVisual

如果旋转设备,它仍然会从纵向显示尺寸。

请注意。这是基于我在模拟器和测试器中的测试。未在具有不同尺寸屏幕的不同设备上进行测试。

答案 2 :(得分:1)

可以通过使用您喜欢的尺寸的Canvas,然后通过更改ScaleX和ScaleY的值来应用缩放。最好的方法是使用数据绑定到运行时计算的属性。但请记住,您可能会保持正确的比例,因此将X和Y缩放相同的量。当该值小于1时,它将缩小,当值大于1时,它将向上扩展。还要记住,基于像素的stuf将变得更像像素化。

<Canvas x:Name="canvas" Background="#FFFFFFFF" Width="656" Height="480">
    <Canvas.RenderTransform>
        <ScaleTransform ScaleX="1" ScaleY="1"/>
    </Canvas.RenderTransform>
    <Button Content="OK"/>
</Canvas>