Sven hace un buen trabajo mostrando cómo detectar el cambio de orientación ...
Sin embargo, si usted no está escribiendo una aplicación de Metro (donde se puede establecer orientaciones preferentes en el manifiesto) no hay forma real de NO dejar que el cambio de orientación, sin embargo, si usted está interesado en que sólo permite Retrato usted podría hacer algo como esto:
Ver Modelo:
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");
}
en principal que 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>
Así que realmente no estamos limitando la Orientación, solo estamos notando cuando sucede y volviendo a girar nuestra UI para que parezca que está en modo vertical :) De nuevo, esto es principalmente para aplicaciones que no son Metro Win 8 y o aplicaciones que también se ejecutan en tabletas Win 7.
No es una respuesta directa a su pregunta, pero si rediseña su interfaz de usuario para usar un diseño fluido, sus usuarios no habrán visto su UI de lado cuando convierten la tableta en modo apaisado. WPF tiene muchas opciones para hacer un diseño fluido. –
¿Estás usando un lienzo para hacer el diseño? –