C# 屏幕宽度返回负数
我想从我的页面中获取网格宽度,因此我尝试了以下方法:C# 屏幕宽度返回负数,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我想从我的页面中获取网格宽度,因此我尝试了以下方法: public MemeBuilder() { InitializeComponent(); ColumnWidth = (MainGrid.Width - (8 * 5)) / 7; .... 但是主网格宽度返回-1 以下是网格的xaml: <Grid x:Name="MainGrid"> <Grid.RowDefinitions> <RowDefinition
public MemeBuilder()
{
InitializeComponent();
ColumnWidth = (MainGrid.Width - (8 * 5)) / 7;
....
但是主网格宽度返回-1
以下是网格的xaml:
<Grid x:Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
.....
我做错了什么?我错了,你使用的是xamarin表单。我认为你没有得到宽度,因为生命周期就像@Peter B所说的那样。 启动事件
protected override void OnStart()
{
ColumnWidth = (MainGrid.width- (8 * 5)) / 7;
}
或
如果网格位于另一个页面中,则显示页面事件
protected async override void OnAppearing()
{
if(!isLoaded)
{
//Do API Calls
isLoaded=true;
}
}
我的错误是,您使用的是xamarin表单。我认为您没有获得宽度,因为生命周期就像@Peter B所说的那样。 启动事件
protected override void OnStart()
{
ColumnWidth = (MainGrid.width- (8 * 5)) / 7;
}
或
如果网格位于另一个页面中,则显示页面事件
protected async override void OnAppearing()
{
if(!isLoaded)
{
//Do API Calls
isLoaded=true;
}
}
您可以订阅SizeChanged事件,并从中获得宽度:
您可以订阅SizeChanged事件,并从中获得宽度:
处理此问题的最佳方法是使用Xamarin.Essentials设备显示信息API
// Get Metrics
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
// Orientation (Landscape, Portrait, Square, Unknown)
var orientation = mainDisplayInfo.Orientation;
// Rotation (0, 90, 180, 270)
var rotation = mainDisplayInfo.Rotation;
// Width (in pixels)
var width = mainDisplayInfo.Width;
// Height (in pixels)
var height = mainDisplayInfo.Height;
// Screen density
var density = mainDisplayInfo.Density;
现在可以通过除以密度得到宽度,如下所示:
var width = DeviceDisplay.MainDisplayInfo.Width / DeviceDisplay.MainDisplayInfo.Density;
祝你好运
如果您有问题,请回复处理此问题的最佳方法是使用Xamarin.Essentials设备显示信息API
// Get Metrics
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
// Orientation (Landscape, Portrait, Square, Unknown)
var orientation = mainDisplayInfo.Orientation;
// Rotation (0, 90, 180, 270)
var rotation = mainDisplayInfo.Rotation;
// Width (in pixels)
var width = mainDisplayInfo.Width;
// Height (in pixels)
var height = mainDisplayInfo.Height;
// Screen density
var density = mainDisplayInfo.Density;
现在可以通过除以密度得到宽度,如下所示:
var width = DeviceDisplay.MainDisplayInfo.Width / DeviceDisplay.MainDisplayInfo.Density;
祝你好运
如果您有问题,请还原网格不包含ActualWidth的定义网格不包含ActualWidth的定义元素的宽度在布局阶段从-My guess is设置,您可能试图过早访问它。元素的宽度在布局阶段从-My guess is设置,“你可能试图访问它太早了。”提问者问错了问题。在家长most布局上,他想要的是宽度--@ColeXia MSFT,提问者问错了他的问题。在父most布局上,他需要宽度-_-