Visual Studio 2015 Community Editionを使用して、Windows 10 ProでUWPアプリ開発の学習を始めました。 MainPage.xamlのPageタグのWidth
およびHeight
属性を設定することで、 公式の「Hello、World!」サンプルのC#バージョン を変更しようとしました。
興味深いことに、アプリを起動すると、サイズが異なります。さらに、ウィンドウのサイズを変更してから再起動すると、アプリは以前のウィンドウサイズを記憶しているようです。
少なくともデスクトップPCで、UWPアプリに定義済みのウィンドウサイズを強制することは可能ですか?
PreferredLaunchViewSize
の-constructorにMainPage
を設定してみてください:
public MainPage()
{
this.InitializeComponent();
ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}
@kolも指摘したように、デフォルトの500x32より小さいサイズが必要な場合は、手動でリセットする必要があります。
ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100));
ウィンドウサイズを実際に制御することはできず、サイズを変更しようとしても失敗する可能性があります。私はMSDNフォーラムで同じ質問をし、ここで答えを得ました:
Windows 10ユニバーサルDirectXアプリケーション
ところで、これは、イベントハンドラー「OnLaunched」またはイベントハンドラー「OnActivated」findのソリューションです。
Window.Current.Activate();
それを次のように置き換えます:
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);
このコードを "OnActivated()"イベントハンドラーに配置すると、アプリの起動時および中断後にアクティブになるときに定義済みのサイズが設定されるため、より適切です。
「desiredSize」の計算では、800が幅で、600が高さです。サイズはDPIであるため、この計算が必要です。したがって、ピクセルからDPIに変換する必要があります。
また、サイズを「320x200」より小さくすることはできません。
アプリの最初の起動では、ApplicationView.PreferredLaunchWindowingMode
に設定されています ApplicationViewWindowingMode.Auto
コードの設定に関係なく。
ただし、 MSDNのこの質問 から、これを克服する方法があるかもしれません。答えの1つは、その最初の起動サイズを設定する方法を提供します(その後、Auto
に戻ります)。
PreferredLaunchViewSize
で一度だけ起動することが目標の場合、この失礼なソリューションを使用できます(コーディングスタイルを使用してより良い実装を行うことができます!:P)public MainPage() { this.InitializeComponent(); var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; if (localSettings.Values["launchedWithPrefSize"] == null) { // first app launch only!! ApplicationView.PreferredLaunchViewSize = new Size(100, 100); ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize; localSettings.Values["launchedWithPrefSize"] = true; } // resetting the auto-resizing -> next launch the system will control the PreferredLaunchViewSize ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto; } }
追伸私はこれをテストしていません。