Как установить минимальный размер окна в режиме компактного наложения приложения UWP

#c# #uwp-xaml #picture-in-picture

#c# #uwp-xaml #картинка в картинке

Вопрос:

В моем приложении UWP есть кнопка, которая переводит приложение в режим «картинка в картинке». Размер окна в PIP mopde может быть изменен между 150 x 150 и 500 x 500, а также я могу установить размер окна при переходе в режим компактного наложения. Но я хочу ограничить минимальный размер окна приложения в режиме PIP. Как я могу ограничить изменение размера приложения до минимального размера по умолчанию 150×150.

  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. learn.microsoft.com/en-us/uwp/api/…

2. programmer.group/…

Ответ №1:

Пожалуйста, проверьте 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);
    }
}
  

Комментарии:

1. Ранее я просмотрел документацию, согласно которой допустимо что-либо между 192×48 и 500×500. И тот же «SetPreferredMinSize (новый размер (360, 400))» используется для события Onlaunched приложения, которое ограничивает дальнейшее изменение размера приложения. Я хочу добиться того же для режима компактного наложения