如何在UWP应用的紧凑叠加模式下设置最小窗口大小

时间:2020-11-02 11:23:46

标签: c# uwp-xaml picture-in-picture

我的UWP应用中有一个按钮,可将应用进入画中画模式。 PIP mopde中的窗口大小可以在150 x 150和500 x 500之间更改,并且我可以在进入紧凑叠加模式时设置窗口大小。但是我想限制PIP模式下应用程序的最小窗口大小。如何限制应用大小调整为默认的150x150最小尺寸。

 var applicationView = ApplicationView.GetForCurrentView();
 var viewModePreference = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay);
 viewModePreference.CustomSize = new Size(width, height);

 applicationView.SetPreferredMinSize(new Size(360, 400));
 await applicationView.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay, viewModePreference);

SetPreferredMinSize()不能解决目的。请帮我解决。谢谢

1 个答案:

答案 0 :(得分:0)

请查看SetPreferredMinSize文档,

允许的最小最小尺寸为192 x 48有效像素。允许的最大最小尺寸为500 x 500有效像素。如果将值设置为超出这些范围,则该值将被强制在允许的范围内。 (要了解有效像素,请参阅的响应式设计101。)

因此,请将最大宽度从150修改为192。

private void Button_Click(object sender, RoutedEventArgs e)
{
   
    var size = new Size(192,150);
    ApplicationView.GetForCurrentView().TryResizeView(size);
}

更新

如果要限制用户以覆盖模式调整窗口大小。请在用户更改窗口大小时收听SizeChanged事件并调整点子视图的大小。

private  void CoreWindow_SizeChanged(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.WindowSizeChangedEventArgs args)
{
    var applicationView = ApplicationView.GetForCurrentView();
    if(applicationView.ViewMode == ApplicationViewMode.CompactOverlay)
    {

        var size = new Size(200, 200);                        
        ApplicationView.GetForCurrentView().TryResizeView(size);
    }
}