我遇到的问题,并会在这里欣赏专家的帮助。 我试图让屏幕分辨率,这样我可以使用基于电话的类型适当布局/图像。
我的项目类型为WP7。 每当我跑在不同的WP7和WP8设备代码,我得到了相同的分辨率每次(800 X 480)。 预期的行为是我得到的根据设备类型如WVGA分辨率不同= 800×480,WXGA = 1280×768,支持720p = 1280×720。
下面的所有3个代码片段给我的未预期的行为,800 X 480相同的分辨率。
Application.Current.RootVisual.RenderSize.Height + " x " + Application.Current.RootVisual.RenderSize.Width;
(App.Current.RootVisual as FrameworkElement).ActualHeight + " x " + (App.Current.RootVisual as FrameworkElement).ActualWidth;
App.Current.Host.Content.ActualHeight + " x " + App.Current.Host.Content.ActualWidth;
在MSDN关于如何做到这一点的WP8但请注意,我想代码以及WP7设备上运行的文章会谈。
您可以尝试负载App.Current.Host.Content.ScaleFactor
使用反射。
我没有我的WP8环境了,但你可以看到类似的解决方案在这里 。 他们用它来创建WP7.8王尔德瓷砖
我结束了写作按照上述基于代码的安东·西济科夫建议。 它使用反射来读取比例因子财产。 如果7.1应用上WP8设备上运行,反射将用于比例因子属性返回值与基于能够确定设备的分辨率。
public enum Resolutions { WVGA, WXGA, HD720p };
public static class ResolutionHelper
{
static int? ScaleFactor;
static ResolutionHelper()
{
object scaleFactorValue = GetPropertyValue(App.Current.Host.Content, "ScaleFactor");
if (scaleFactorValue != null)
{
ScaleFactor = Convert.ToInt32(scaleFactorValue);
}
}
private static bool IsWvga
{
get
{
return ScaleFactor.HasValue && ScaleFactor.Value == 100;
}
}
private static bool IsWxga
{
get
{
return ScaleFactor.HasValue && ScaleFactor.Value == 160;
}
}
private static bool Is720p
{
get
{
return ScaleFactor.HasValue && ScaleFactor.Value == 150;
}
}
public static Resolutions CurrentResolution
{
get
{
if (IsWxga) return Resolutions.WXGA;
else if (Is720p) return Resolutions.HD720p;
return Resolutions.WVGA;
}
}
private static object GetPropertyValue(object instance, string name)
{
try
{
return instance.GetType().GetProperty(name).GetValue(instance, null);
}
catch
{
// Exception will occur when app is running on WP7 devices as "ScaleFactor" property doesn't exist. Return null in that case.
return null;
}
}
}
作为MSDN文章中所述您链接到: MSDN
Windows Phone 7的只支持单一的分辨率,800 x 480的因为你的项目的目标是WP7,这将是预期的行为。 如果你正在开发一个Windows Phone 8的项目,那么你应该看到App.Current.Host.Content.ScaleFactor应该返回不同的结果。
你可能会需要创建一个WP8项目定制为WP8的各项决议。 如果你仍然想支持WP7的设备,那么你需要创建一个单独的WP7项目。