Bạn nên tận dụng các VisualStateManager trong XAML, kiếm một giải pháp XAML đầy đủ:
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="OrientationStates">
<VisualState x:Name="Full"/>
<VisualState x:Name="Fill"/>
<VisualState x:Name="Portrait"/>
<VisualState x:Name="Snapped"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
tạo ra storyboards cho mỗi VisualState và các yếu tố ẩn/hiển thị trong XAML của bạn. Ví dụ của Microsoft sử dụng cùng một giải pháp.
-
Cập nhật
Tôi tìm kiếm trên mạng và thấy các trạng thái thích hợp, một ví dụ là đằng sau liên kết này: MSDN.
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait"/>
<VisualState x:Name="Snapped"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
Các trạng thái phản ánh ApplicationViewState enum. Bạn có thể tìm thấy thêm thông tin here.
bạn có thể xin hãy giải thích câu trả lời của bạn nhiều hơn ?, với sự giúp đỡ của bạn, tôi có thể nhận được liên kết này, http://www.markermetro.com/2011/11/technical/windows-8-metro-style-apps-layout-and-orientation-management-with- xaml /, vì vậy nó có nghĩa là tôi phải viết một bố trí khác nhau cho mỗi trạng thái trực quan, và rebind dữ liệu trên mỗi định hướng thay đổi để điều khiển chính xác tùy thuộc vào nhà nước? –
Có!Đó thực sự sẽ là giải pháp tốt nhất, xaml duy nhất, afaik. Bạn có thể với một số kịch bản thông minh sử dụng lại một số yếu tố của bạn, nhưng bạn chủ yếu sẽ phải tạo bố trí khác nhau. Nếu bạn làm điều đó có thể là khôn ngoan để thay đổi chúng để tách UserControls hoặc Views và bao gồm những người. – Kolky
Xin lỗi, tôi hơi có chút suy nghĩ. Microsoft đã tạo một lớp Trang cơ sở hỗ trợ các VisualState này. Tôi đã cập nhật bài đăng của mình bằng một ví dụ dễ sử dụng hơn ... – Kolky