Ich habe erfolgreich eine Handlung mit Oxyplot in Xamarin.Forms generiert, aber ich kann nicht aufhören Oxyplot die gesamte Seite nehmen.Xamarin.Forms: Oxyplot nimmt ganze Seite
Ich verwende Stapellayout auf anderen Seiten in einem Karussell, und habe ein Banner als eingebettete Stacklayout auf jedem und möchte die Handlung in einem eingebetteten Stacklayout darunter erscheinen lassen.
Aber das Banner erscheint kurz und wird dann vom Oxyplot überschrieben.
Ich fand Hinweise auf die Tatsache, dass Grid anstelle von Stacklayout verwendet werden sollte, da es bekannte Probleme gibt, aber Gitter funktioniert auch nicht.
Jede Hilfe dankbar erhalten! Es kann ein bindendes Problem sein, zum Beispiel, wenn ich das Model = "{Binding Model}" entferne, funktioniert es immer noch! Und es ignoriert den HeighRequest = "100" und füllt nur die Seite. Ich vermisse hier offensichtlich etwas.
Dies ist der XAML-Code, ich habe den Raster Versuch Kommentar gesetzt, und die verschiedenen Optionen in dem „Oxy: PlotView“ sind die letzte habe ich versucht:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="RentGuru2.PieCosts"
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
Padding="0, 20, 0, 0"
BackgroundColor="#21b09c">
<StackLayout Orientation="Vertical">
<StackLayout Orientation="Horizontal" BackgroundColor="#21b09c" HeightRequest="60">
<Image Source = "BannerLogo.png" />
<Label Text="Costs breakdown" FontSize="Large" TextColor="White" Margin="10" VerticalTextAlignment="Center"/>
</StackLayout>
<StackLayout HeightRequest="300">
<oxy:PlotView Model="{Binding Model}" VerticalOptions="Center" HorizontalOptions="FillAndExpand"
HeightRequest="100" WidthRequest="100" />
</StackLayout>
</StackLayout>
<!--<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Grid.Row="0" Grid.Column ="0" Source = "BannerLogo.png" />
<Label Grid.Row="0" Grid.Column ="1" Text="Costs breakdown" FontSize="Large" TextColor="White" Margin="10" VerticalTextAlignment="Center"/>
<oxy:PlotView Grid.Row="1" Grid.ColumnSpan ="2" Model="{Binding Model}" VerticalOptions="Center" HorizontalOptions="Center" />
</Grid>-->
</ContentPage>
Dies ist die relevante oxyplot xaml.cs Code:
namespace RentGuru2
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class PieCosts : ContentPage
{
public PieCosts()
{
InitializeComponent();
}
protected override void OnAppearing()
{
Content = new PlotView
{
Model = CreatePieChart()
};
}
private PlotModel CreatePieChart()
{
var model = new PlotModel
{
Title = "Costs breakdown",
Padding = new OxyThickness(50, 30, 50, 40),
TitleFontSize = 22,
TitleColor = OxyColors.White
//Title = "",
//Padding = new OxyThickness(50, 30, 50, 40),
//TitleFontSize = 1,
//TitleColor = OxyColors.White,
};
var ps = new PieSeries
{
StrokeThickness = .25,
InsideLabelPosition = .8,
AngleSpan = 360,
StartAngle = 0,
LabelField = "{2:0.0}",
FontSize = 15,
TextColor = OxyColors.White
};
'OnAppearing()' ersetzt den 'Inhalt' der gesamten Seite mit einem' PlotView' ... so bekommst du, was du verlangst ...: O) – jsanalytics