Свен хорошо показывает, как обнаружить изменение ориентации ...
Однако, если вы не пишете приложение Metro (где вы можете установить предпочтительные ориентации в манифесте), нет никакого реального способа НЕ допустить изменения ориентации, однако, если вы заинтересованы только в разрешении Portrait, вы можете сделать что-то вроде это:
Просмотр модели:
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" );
}
В тебе главное окно. 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>
Таким образом, мы действительно не ограничиваем ориентацию, мы просто замечаем, когда это происходит, и поворачиваем наш пользовательский интерфейс, чтобы он по-прежнему выглядел как в портретном режиме :) Опять же, это в основном не для приложений Metro Win 8 и приложения, которые также работают на планшетах Win 7.