2015-08-02 33 views
14

Một số ứng dụng trong Windows Store có nút Toàn màn hình bổ sung cho nút thu nhỏ, phóng to và đóng trong thanh tiêu đề. Nút này trông tương tự như nút Thoát toàn màn hình mà mọi Ứng dụng đều có trong Thanh tiêu đề nếu Chế độ toàn màn hình đang hoạt động. Có phải đó là một hệ thống kiểm soát và nếu làm thế nào tôi có thể sử dụng nó trong C# Universal App của tôi?Nút toàn màn hình Windows Universal App

+0

bất kỳ câu trả lời nào được cung cấp có phải là một giải pháp khả thi cho câu hỏi của bạn? – Herdo

+0

Hãy xem [rằng] (https://marcominerva.wordpress.com/2015/07/09/full-screen-mode-in-windows-10-universal-apps/) – Corcus

Trả lời

7

Bạn sẽ phải sử dụng phương thức Window.SetTitleBar để đạt được hành vi mong muốn của mình. Do đó, bạn sẽ cần thực hiện một vài bước:

Đầu tiên, cho phép chế độ xem mở rộng vào thanh tiêu đề. Xin lưu ý rằng bạn chỉ có thể đặt phần bên trái của thanh tiêu đề. Các Minimize, Tối đa hóaĐóng nút vẫn sẽ ở đó:

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; 

Sau khi bạn đã thiết lập đó, bạn gọi phương thức Window.SetTitleBar với một UIElement:

Window.Current.SetTitleBar(myTitleBar); 

Trong trường hợp như myTitleBar có thể trông giống như sau:

<Border x:Name="myTitleBar"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 

     <!-- Title --> 
     <TextBlock Grid.Column="0" 
        Text="..."/> 

     <!-- Custom buttons attached to the right side --> 
     <StackPanel Grid.Column="1" 
        Orientation="Horizontal"> 
      <Button x:Name="FullScreenButton"/> 
      <!-- Use U+E740 FullScreen Icon for the button above --> 
     </StackPanel> 
    </Grid> 
</Border 

Hướng dẫn mở rộng của Marco Minerva (bao gồm cả hành vi XAML tốt đẹp sẽ tinh chỉnh trường hợp sử dụng này thậm chí tốt hơn) có thể được tìm thấy here.

+0

Cảm ơn tôi sẽ cố gắng điều chỉnh cho dự án của tôi (DockPanel không phải là avialable cho Windows Universal Apps) – Joe300

+0

@ Joe300 Cái xấu của tôi. Tôi chỉ cần đặt nó ở đó để chứng minh bố cục :) – Herdo

4

Tôi đã thực hiện FullScreenModeTitleBarBehavior (cùng với điều khiển FullScreenModeTitle) có thể chỉ làm những gì bạn muốn.

enter image description here

Các hành vi cần phải được gắn liền với một chính Page và nó cho phép bạn chỉ định các màu foreground và background của TitleBar. Nếu bạn cần nhiều màu hơn, bạn chỉ cần thêm nhiều thuộc tính hơn vào hành vi.

Cách nó hoạt động là hành vi sẽ di chuyển Content ra khỏi Page vào FulScreenModeTitle kiểm soát mà về cơ bản soạn một tùy chỉnh TitleBar với chuyển Content.

// Store the original main page content. 
var mainPageContent = _mainPage.Content; 
// Clear the content for now. 
_mainPage.Content = null; 

// Move the content of the main page to our title bar control. 
_customTitleBar.SetPageContent(mainPageContent); 
// Refill the content with our new title bar control. 
_mainPage.Content = _customTitleBar; 

Bạn có thể tìm mã nguồn đầy đủ qua here trong GitHub. Cũng lưu ý rằng giải pháp này được lấy cảm hứng từ sample cụ thể từ kho lưu trữ GitHub của Microsoft.


Một số vấn đề tôi đã tìm thấy cho đến nay

Bạn có thể đã nhận thấy có một khoảng cách giữa tùy chỉnh đầy đủ nút chế độ màn hình của chúng tôinút giảm thiểu. Thật không may là bạn không thể giảm bớt thêm nữa do không gian này được dành riêng cho hệ thống (kiểm tra trên SystemOverlayRightInset để biết thêm chi tiết). Nếu bạn di chuyển nút tùy chỉnh tùy chỉnh gần hơn, thử nghiệm lần truy cập sẽ không thành công, điều này làm cho nó không thể nhấp được.Ngoài ra tôi đã thấy rằng nếu bạn sử dụng nút tùy chỉnh để thoát khỏi chế độ toàn màn hình, ba nút hệ thống đó sẽ bị rối loạn chức năng cho đến khi bạn nhấp đúp vào TitleBar để phóng to màn hình. Đây có thể là một lỗi. May mắn thay, khi màn hình ở chế độ toàn màn hình, nút phóng to sẽ được thay thế bằng nút toàn màn hình thoát toàn cảnh, vì vậy chúng tôi chỉ có thể ẩn nút tùy chỉnh của chúng tôi và để hệ thống xử lý thoát.

+1

Giải pháp tốt, nhưng các vấn đề bạn đã tìm thấy là khá quan trọng. Và thực tế, vấn đề thứ hai tồn tại khi bạn thoát toàn màn hình thông qua nút hệ thống. Bạn đã quản lý để sắp xếp điều này từ đó? –

0

Nó có thể phân biệt thành 3 loại chế độ toàn màn hình 1. Vào và thoát khỏi chế độ toàn màn hình. 2. Trả lời các thay đổi ở chế độ toàn màn hình. 3. Khởi chạy ở chế độ toàn màn hình.

Bạn có thể tham khảo URL này https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/FullScreenMode

var view = ApplicationView.GetForCurrentView(); 
     if (view.IsFullScreenMode) 
     { 
      view.ExitFullScreenMode(); 
      rootPage.NotifyUser("Exiting full screen mode", NotifyType.StatusMessage); 
      // The SizeChanged event will be raised when the exit from full screen mode is complete. 
     } 
     else 
     { 
      if (view.TryEnterFullScreenMode()) 
      { 
       rootPage.NotifyUser("Entering full screen mode", NotifyType.StatusMessage); 
       // The SizeChanged event will be raised when the entry to full screen mode is complete. 
      } 
      else 
      { 
       rootPage.NotifyUser("Failed to enter full screen mode", NotifyType.ErrorMessage); 
      } 
     } 
Các vấn đề liên quan