2015-08-07 30 views
22

Tôi vừa mới bắt đầu học phát triển ứng dụng UWP trên Windows 10 Pro bằng Visual Studio 2015 Community Edition. Tôi đã cố gắng sửa đổi các C# version of the official "Hello, world" sample bằng cách thiết lập các thuộc tính Width và Height của thẻ Page trong MainPage.xaml. Thật thú vị, khi tôi khởi động ứng dụng, kích thước của nó sẽ khác. Hơn nữa, nếu tôi thay đổi kích thước cửa sổ của nó và sau đó khởi động lại nó, ứng dụng dường như nhớ kích thước cửa sổ trước đó của nó.Ứng dụng Windows 10 UWP - Đặt kích thước cửa sổ trên máy tính để bàn

Có thể buộc ứng dụng UWP có kích thước cửa sổ được xác định trước, ít nhất trên máy tính để bàn không?

Trả lời

41

Hãy thử đặt PreferredLaunchViewSize trong số constructor như thế này của bạn MainPage.

public MainPage() 
{ 
    this.InitializeComponent(); 

    ApplicationView.PreferredLaunchViewSize = new Size(480, 800); 
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize; 
} 

Cập nhật

Như @kol cũng chỉ ra, nếu bạn muốn bất kỳ kích thước nhỏ hơn so với mặc định 500x320, bạn sẽ cần phải tự thiết lập lại nó.

ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100)); 
+0

Thú vị, cảm ơn. Có thể thiết lập điều này trong XAML không? – kol

+0

Thật không may tôi không nghĩ vậy. –

+1

Khi bạn nghĩ về, bạn không đặt kích thước trên trang chính, bạn đặt trên trang chính 'cha mẹ của cha mẹ, là cha mẹ của Khung. Tôi không nghĩ rằng có quyền truy cập xaml trực tiếp cho điều đó. –

9

Hi tôi có giải pháp cho vấn đề của bạn, điều này là bạn không thực sự có thể kiểm soát kích thước cửa sổ, và thậm chí nếu bạn sẽ cố gắng để thay đổi kích thước nó nó có thể thất bại. Tôi đã hỏi những câu hỏi tương tự trên các diễn đàn MSDN và nhận được câu trả lời ở đây

https://social.msdn.microsoft.com/Forums/en-US/3110e17d-b7c8-4040-8e25-a27df7595f13/windows-10-universal-directx-application?forum=wpdevelop

btw đây là giải pháp trong xử lý sự kiện của bạn "OnLaunched" hoặc xử lý sự kiện của bạn "OnActivated" tìm:

Window.Current.Activate(); 

Và thay thế bằng:

float DPI = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().LogicalDpi; 

Windows.UI.ViewManagement.ApplicationView.PreferredLaunchWindowingMode = Windows.UI.ViewManagement.ApplicationViewWindowingMode.PreferredLaunchViewSize; 

var desiredSize = new Windows.Foundation.Size(((float)800 * 96.0f/DPI), ((float)600 * 96.0f/DPI)); 

Windows.UI.ViewManagement.ApplicationView.PreferredLaunchViewSize = desiredSize; 

Window.Current.Activate(); 

bool result = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryResizeView(desiredSize); 

sẽ tốt hơn nếu bạn đặt mã này vào "OnActivated()" xử lý sự kiện vì nó sẽ thiết lập s xác định của bạn đóng băng khi ứng dụng bắt đầu và khi ứng dụng trở thành Hoạt động sau bất kỳ gián đoạn nào.

Trong "desiredSize" Tính toán 800 là chiều rộng và 600 là chiều cao tính toán này là cần thiết bởi vì kích thước là trong DPI vì vậy bạn phải chuyển đổi nó từ pixel để DPI

Cũng nên nhớ rằng kích thước không thể nhỏ hơn " 320x200 "

+3

Câu trả lời chỉ liên kết không phải là cách của SO. Liên kết có thể đã lỗi thời vào một ngày nào đó. Đặt thông tin cần thiết trong câu trả lời của bạn! – jogo

Các vấn đề liên quan