Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin UWP应用程序不限制用户将窗口大小调整为150(推荐)分辨率的较低大小 protectedoverride void OnLaunched(启动ActivatedEventargs e) { Window.Current.SizeChanged+=当前_SizeChanged; } 私有无效当前大小已更改(对象发送方,Windows.UI.Core.WindowSizeChangedEventArgs e) { var displayInformation=displayInformation.GetForCurrentView(); 如果(displayInformation.ResolutionScale==ResolutionScale.scale125%| | displayInformation.ResolutionScale==ResolutionScale.scale100%) { var screenSize=新大小(displayInformation.ScreenWidtinRawPixels, 显示信息。屏幕高度(像素); var minheight=屏幕大小。高度*0.7; var minwidth=屏幕大小。宽度*0.7; if(e.Size.Height_Windows_Xamarin_Xamarin.forms_Xamarin.uwp - Fatal编程技术网

Xamarin UWP应用程序不限制用户将窗口大小调整为150(推荐)分辨率的较低大小 protectedoverride void OnLaunched(启动ActivatedEventargs e) { Window.Current.SizeChanged+=当前_SizeChanged; } 私有无效当前大小已更改(对象发送方,Windows.UI.Core.WindowSizeChangedEventArgs e) { var displayInformation=displayInformation.GetForCurrentView(); 如果(displayInformation.ResolutionScale==ResolutionScale.scale125%| | displayInformation.ResolutionScale==ResolutionScale.scale100%) { var screenSize=新大小(displayInformation.ScreenWidtinRawPixels, 显示信息。屏幕高度(像素); var minheight=屏幕大小。高度*0.7; var minwidth=屏幕大小。宽度*0.7; if(e.Size.Height

Xamarin UWP应用程序不限制用户将窗口大小调整为150(推荐)分辨率的较低大小 protectedoverride void OnLaunched(启动ActivatedEventargs e) { Window.Current.SizeChanged+=当前_SizeChanged; } 私有无效当前大小已更改(对象发送方,Windows.UI.Core.WindowSizeChangedEventArgs e) { var displayInformation=displayInformation.GetForCurrentView(); 如果(displayInformation.ResolutionScale==ResolutionScale.scale125%| | displayInformation.ResolutionScale==ResolutionScale.scale100%) { var screenSize=新大小(displayInformation.ScreenWidtinRawPixels, 显示信息。屏幕高度(像素); var minheight=屏幕大小。高度*0.7; var minwidth=屏幕大小。宽度*0.7; if(e.Size.Height,windows,xamarin,xamarin.forms,xamarin.uwp,Windows,Xamarin,Xamarin.forms,Xamarin.uwp,以上代码在100和125分辨率下运行良好。但在150(推荐)分辨率下,用户可以将应用程序最小化到较小的大小。您知道如何在150分辨率下处理屏幕大小。请查看文档 允许的最小大小为192 x 48个有效像素。允许的最大最小大小为500 x 500个有效像素。如果您将值设置在这些边界之外,则该值将强制在允许的边界之内。(要了解有效像素,请参阅Windows应用程序设计简介。) 所以,请编辑你的最大宽度150到192 protected override void OnLaunched(Lau

以上代码在100和125分辨率下运行良好。但在150(推荐)分辨率下,用户可以将应用程序最小化到较小的大小。您知道如何在150分辨率下处理屏幕大小。

请查看文档

允许的最小大小为192 x 48个有效像素。允许的最大最小大小为500 x 500个有效像素。如果您将值设置在这些边界之外,则该值将强制在允许的边界之内。(要了解有效像素,请参阅Windows应用程序设计简介。)

所以,请编辑你的最大宽度150到192

     protected override void OnLaunched(LaunchActivatedEventArgs e)
            { 
              
             Window.Current.SizeChanged += Current_SizeChanged;
            }
    


    private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
        {
            var displayInformation = DisplayInformation.GetForCurrentView();
            if (displayInformation.ResolutionScale == ResolutionScale.Scale125Percent || displayInformation.ResolutionScale == ResolutionScale.Scale100Percent)
            {
                var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
                                          displayInformation.ScreenHeightInRawPixels);
                var minheight = screenSize.Height * 0.7;
                var minwidth = screenSize.Width * 0.7;
                if (e.Size.Height < minheight || e.Size.Width < minwidth)
                {
                    ApplicationView.GetForCurrentView().TryResizeView(new Size(minwidth, minheight));
                }
            }
    else{
    //150 and above resolution
var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
                           displayInformation.ScreenHeightInRawPixels);
            var minwidth = screenSize.Width / 1.5;
                 if (e.Size.Width < minwidth)
                {
                    var size = new Size(1100, 640);
                    ApplicationView.GetForCurrentView().SetPreferredMinSize(size);
                    Debug.WriteLine("resize staus: " + ApplicationView.GetForCurrentView().TryResizeView(size));
                }

           
        }
如果要将当前窗口大小设置为150*150,请将
ApplicationViewMode
设置为
CompactOverlay
give
CustomSize
,如下所示

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

}
更新

请检查这句话

要求的尺寸大于可用工作区域(无影响)

1920*1080缩放150%,可用工作区为1280*(720-taskbarheight)。设置为600*800时,
TryResizeView
无效。因为应用程序的窗口比当前工作区大。请尝试将其设置为600*600

更新1

现在,它不允许用户缩小或恢复到600600以下。但现在的问题是,它不允许最大化或扩展到600600以上

请添加最大化窗口宽度触发条件,如下所示

var preferences = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay);
preferences.CustomSize = new Windows.Foundation.Size(150, 150);
await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay, preferences);
var displayInformation=displayInformation.GetForCurrentView();
如果(displayInformation.ResolutionScale==ResolutionScale.scale125%| | displayInformation.ResolutionScale==ResolutionScale.scale100%)
{
var screenSize=新大小(displayInformation.ScreenWidtinRawPixels,
显示信息。屏幕高度(像素);
var minheight=屏幕大小。高度*0.7;
var minwidth=屏幕大小。宽度*0.7;
if(e.Size.Height
感谢您的回复。为了更清楚地说明问题,我在问题中添加了更多代码。我想限制用户将窗口大小调整到600800左右。目前,我正在以全屏模式启动应用程序(不是全屏模式,因为我不想隐藏任务栏)。一旦用户单击最小化或缩小应用程序窗口大小,我需要将其限制在大约600800大小。好的。我知道了,请检查此备注要求的大小大于可用工作区域(无效);1920*1080缩放150%的可用工作区是1280*720。当您设置600*800时,
TryResizeView
无效。@Nico Zhu-MSFT谢谢!…现在它不允许用户缩小或还原到600600以下。但现在的问题是,它不允许最大化或扩展到600600以上。请检查更新1部分,然后单击add触发条件。@Nico Zhu-MSFT我正在以不同的分辨率进行测试。我不太关心硬编码,因为var size=新的大小(600640)(而不是找到可用的工作区域);发布我将使其被接受。谢谢!。当您最大化窗口时,您可以使用`ApplicationView.GetForCurrentView().VisibleBounds
,获得VisibleBounds。当前窗口的高度是最大工作区高度(656.66)。但它不能用于
TryResizeView`方法。测试后,允许最大高度为640.66。@NicoZhu MSFT我认为这没问题。但今天出现了一个奇怪的问题,上面的代码在所有机器的调试模式下都能正常工作,但当我在发布模式下构建时,它允许我调整宽度小于最小值。我不知道g是什么出错以及如何调试。那么,您在发布模型中使用的最小大小是多少?@NicoZhu MSFT我更新了我的代码。。
var displayInformation = DisplayInformation.GetForCurrentView();
if (displayInformation.ResolutionScale == ResolutionScale.Scale125Percent || displayInformation.ResolutionScale == ResolutionScale.Scale100Percent)
{
    var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
                              displayInformation.ScreenHeightInRawPixels);
    var minheight = screenSize.Height * 0.7;
    var minwidth = screenSize.Width * 0.7;
    if (e.Size.Height < minheight || e.Size.Width < minwidth)
    {
        ApplicationView.GetForCurrentView().TryResizeView(new Size(minwidth, minheight));
    }
}
else
{
    var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
                                displayInformation.ScreenHeightInRawPixels);
    var minwidth = screenSize.Width / 1.5;
    if (e.Size.Width < minwidth)
    {
        var size = new Size(600, 640);         
        ApplicationView.GetForCurrentView().TryResizeView(size);
    }
    //150 resolution
}