Sven ma dobrą pracę pokazujący jak wykrywać zmiany orientacji ...
Jednak jeśli nie piszesz aplikację metra (w którym można ustawić preferowane kierunki w manifeście) nie istnieje prawdziwy sposób na NIE niech zmianę orientacji, jednak jeśli jesteś zainteresowany tylko pozwalając Portret mógłby zrobić coś takiego:
Zobacz model:
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");
}
w tobie 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>
Tak naprawdę nie ograniczamy orientacji, zauważamy tylko, kiedy to się dzieje, i ponownie obracamy nasz interfejs, więc nadal wygląda tak, jakby był w trybie portretowym :) Znowu dotyczy to głównie aplikacji innych niż Metro Win 8 i lub aplikacje, które działają również na Win 7 tabletów.
Nie jest to bezpośrednia odpowiedź na Twoje pytanie, ale jeśli przeprojektujesz interfejs użytkownika tak, aby korzystał z płynnego układu, użytkownicy nie będą patrzeć na twój interfejs na boki, gdy przekręcą tablet w tryb poziomy. WPF ma wiele opcji do robienia płynnego układu. –
Czy używasz układu Canvas do zrobienia? –