WPF定向
我正在平板电脑上开发一个纵向应用程序 但是,当平板电脑切换到横向模式时,应用程序也会切换,所有对齐都会被取消。那么,有没有办法将我的WPF应用程序锁定到一个方向 谢谢大家! 我必须同意:我自己开发了平板电脑应用程序,你应该提供一个在横向和纵向上都能很好工作的布局 除此之外,您还可以通过以下方式检测方向的变化:WPF定向,wpf,orientation,Wpf,Orientation,我正在平板电脑上开发一个纵向应用程序 但是,当平板电脑切换到横向模式时,应用程序也会切换,所有对齐都会被取消。那么,有没有办法将我的WPF应用程序锁定到一个方向 谢谢大家! 我必须同意:我自己开发了平板电脑应用程序,你应该提供一个在横向和纵向上都能很好工作的布局 除此之外,您还可以通过以下方式检测方向的变化: Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySe
Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);
}
void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight)
{
// runs in landscape
}
else
{
// runs in portrait
}
}
我在为平板电脑开发wpf应用程序时遇到了同样的问题,并从msdn中找到了这篇文章,解释了如何检测屏幕旋转和方向:
我不知道有任何公共API可以锁定屏幕方向。主要原因是,平板电脑制造商通常提供自己的预装实用程序或驱动程序,使用加速计数据改变方向。它不是一个内置的操作系统功能。这在Windows 8中可能会发生变化
虽然这与锁定方向不同,但您可以尝试通过向根容器的LayoutTransform添加旋转变换来对方向更改作出反应。这将改变布局空间,使您的应用程序认为它仍然旋转90度,但操作系统的其他部分不会同意。因此,它实际上只适用于全屏应用程序。Sven很好地展示了如何检测方向变化 但是,如果您没有编写Metro应用程序(您可以在清单中设置首选方向),没有真正的方法不让方向改变,但是如果您只想允许纵向,您可以这样做: 视图模型:
Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new
EventHandler(SystemEvents_DisplaySettingsChanged);
}
public bool IsLandscape { get; set; }
void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight)
{
IsLandscape = true;
}
else
{
IsLandscape = false;
}
RaisePropertyChanged( "IsLandscape" );
}
在Main Window.xaml中:
<Border >
<Border.Style>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsLandscape}" Value="True">
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
///The rest of your controls and UI
</Border>
///其余的控件和UI
因此,我们确实没有限制方向,我们只是注意到它发生的时间,并重新旋转我们的UI,使其看起来仍然处于纵向模式:)同样,这主要适用于非Metro Win 8应用程序和/或运行在Win 7平板电脑上的应用程序。不是对您问题的直接回答,但是,如果你重新设计你的用户界面以使用流畅的布局,那么当用户将平板电脑转换为横向模式时,他们就不会从侧面看你的用户界面。WPF有很多选择来进行流畅的布局。你是使用画布来进行布局吗?这篇文章是针对Windows XP Tablet PC Edition 2005的,看起来不是一个好的解决方案,因为我看到一些游戏不需要旋转游戏,它只是可以在玩游戏时禁用纵向模式。