I have simple graphics view
<VerticalStackLayout>
<GraphicsView x:Name="modelerArea"
Drawable="{StaticResource drawable}"
HeightRequest="1000"
WidthRequest="1000" />
And I want to set width and height to size of window or screen. How can I achieve that?
From xaml.cs file I tried something like this but I get error because field its readonly
double height = DeviceDisplay.MainDisplayInfo.Height;
double width = DeviceDisplay.MainDisplayInfo.Width;
modelerArea.Width = width;
modelerArea.Height = height;
Thanks for any hints.
CodePudding user response:
One way to fill the entire available space would be to simply use the GraphicsView
as the only content item and use the HorizontalOptions
and VerticalOptions
to stretch it:
<ContentPage ...>
<GraphicsView x:Name="modelerArea"
Drawable="{StaticResource drawable}"
HorizontalOptions="Fill"
VerticalOptions="Fill"/>
</ContentPage>
More information on this: https://learn.microsoft.com/en-us/dotnet/maui/user-interface/align-position?view=net-maui-7.0
Alternatively, in your code-behind you could also use the WidthRequest
and HeightRequest
properties of the GraphicsView
:
modelerArea.WidthRequest = width;
modelerArea.HeightRequest = height;
This is necessary, because Width
and Height
are read-only properties that only provide the actually calculated on-screen dimensions. The values of WidthRequest
and HeightRequest
are not guaranteed.
Note: You cannot use both approaches at the same time, because the HorizontalOptions="Fill"
and VerticalOptions="Fill"
will override the requested width and height values.