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
以上代码在100和125分辨率下运行良好。但在150(推荐)分辨率下,用户可以将应用程序最小化到较小的大小。您知道如何在150分辨率下处理屏幕大小。请查看文档 允许的最小大小为192 x 48个有效像素。允许的最大最小大小为500 x 500个有效像素。如果您将值设置在这些边界之外,则该值将强制在允许的边界之内。(要了解有效像素,请参阅Windows应用程序设计简介。) 所以,请编辑你的最大宽度150到192Xamarin 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
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
giveCustomSize
,如下所示
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
}