Xamarin.Forms Rahmen
Die Xamarin.FormsFrame
-Klasse ist ein Layout, das zum Umschließen einer Ansicht mit einem Rahmen verwendet wird, der mit Farbe, Schatten und anderen Optionen konfiguriert werden kann. Frames werden häufig verwendet, um Rahmen für Steuerelemente zu erstellen, können aber verwendet werden, um eine komplexere Benutzeroberfläche zu erstellen. Weitere Informationen finden Sie unter Erweiterte Framenutzung.
Der folgende Screenshot zeigt Frame
Steuerelemente unter iOS und Android:
Die Frame
-Klasse definiert die folgenden Eigenschaften:
BorderColor
ist einColor
Wert, der die Farbe desFrame
Rahmens bestimmt.CornerRadius
ist einfloat
Wert, der den abgerundeten Radius der Ecke bestimmt.HasShadow
ist einbool
Wert, der bestimmt, ob der Frame einen Schlagschatten aufweist.
Diese Eigenschaften werden von BindableProperty
-Objekten unterstützt, was bedeutet, dass das Frame
Ziel von Datenbindungen sein kann.
Hinweis
Das HasShadow
Eigenschaftenverhalten ist plattformabhängig. Der Standardwert ist true
auf allen Plattformen. Auf UWP werden jedoch keine Schlagschatten gerendert. Schlagschatten werden sowohl unter Android als auch unter iOS gerendert, aber Schlagschatten unter iOS sind dunkler und nehmen mehr Platz ein.
Erstellen eines Frames
Ein Frame
kann in XAML instanziiert werden. Das Standardobjekt Frame
hat einen weißen Hintergrund, einen Schlagschatten und keinen Rahmen. Ein Frame
-Objekt umschließt in der Regel ein anderes Steuerelement. Das folgende Beispiel zeigt, dass ein -Objekt standardmäßig Frame
umschlossen wird Label
:
<Frame>
<Label Text="Example" />
</Frame>
Ein Frame
kann auch im Code erstellt werden:
Frame defaultFrame = new Frame
{
Content = new Label { Text = "Example" }
};
Frame
-Objekte können mit abgerundeten Ecken, farbigen Rahmen und Schlagschatten angepasst werden, indem Eigenschaften im XAML-Code festgelegt werden. Das folgende Beispiel zeigt ein benutzerdefiniertes Frame
-Objekt:
<Frame BorderColor="Orange"
CornerRadius="10"
HasShadow="True">
<Label Text="Example" />
</Frame>
Diese instance Eigenschaften können auch im Code festgelegt werden:
Frame frame = new Frame
{
BorderColor = Color.Orange,
CornerRadius = 10,
HasShadow = true,
Content = new Label { Text = "Example" }
};
Erweiterte Framenutzung
Die Frame
-Klasse erbt von ContentView
, was bedeutet, dass sie einen beliebigen Objekttyp View
einschließlich Layout
-Objekten enthalten kann. Diese Möglichkeit ermöglicht es, komplexe Frame
UI-Objekte wie Karten zu erstellen.
Erstellen einer Karte mit einem Frame
Die Kombination eines Frame
-Objekts mit einem Layout
-Objekt, z. B. einem StackLayout
-Objekt, ermöglicht die Erstellung einer komplexeren Benutzeroberfläche. Der folgende Screenshot zeigt ein Beispiel Karte, das mit einem Frame
-Objekt erstellt wurde:
Der folgende XAML-Code zeigt, wie Sie eine Karte mit der Frame
-Klasse erstellen:
<Frame BorderColor="Gray"
CornerRadius="5"
Padding="8">
<StackLayout>
<Label Text="Card Example"
FontSize="Medium"
FontAttributes="Bold" />
<BoxView Color="Gray"
HeightRequest="2"
HorizontalOptions="Fill" />
<Label Text="Frames can wrap more complex layouts to create more complex UI components, such as this card!"/>
</StackLayout>
</Frame>
Ein Karte kann auch im Code erstellt werden:
Frame cardFrame = new Frame
{
BorderColor = Color.Gray,
CornerRadius = 5,
Padding = 8,
Content = new StackLayout
{
Children =
{
new Label
{
Text = "Card Example",
FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)),
FontAttributes = FontAttributes.Bold
},
new BoxView
{
Color = Color.Gray,
HeightRequest = 2,
HorizontalOptions = LayoutOptions.Fill
},
new Label
{
Text = "Frames can wrap more complex layouts to create more complex UI components, such as this card!"
}
}
}
};
Runde Elemente
Die CornerRadius
-Eigenschaft des Frame
-Steuerelements kann verwendet werden, um ein Kreisbild zu erstellen. Der folgende Screenshot zeigt ein Beispiel für ein rundes Bild, das mit einem Frame
-Objekt erstellt wurde:
Der folgende XAML-Code zeigt, wie Sie ein Kreisbild in XAML erstellen:
<Frame Margin="10"
BorderColor="Black"
CornerRadius="50"
HeightRequest="60"
WidthRequest="60"
IsClippedToBounds="True"
HorizontalOptions="Center"
VerticalOptions="Center">
<Image Source="outdoors.jpg"
Aspect="AspectFill"
Margin="-20"
HeightRequest="100"
WidthRequest="100" />
</Frame>
Ein Kreisbild kann auch im Code erstellt werden:
Frame circleImageFrame = new Frame
{
Margin = 10,
BorderColor = Color.Black,
CornerRadius = 50,
HeightRequest = 60,
WidthRequest = 60,
IsClippedToBounds = true,
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center,
Content = new Image
{
Source = ImageSource.FromFile("outdoors.jpg"),
Aspect = Aspect.AspectFill,
Margin = -20,
HeightRequest = 100,
WidthRequest = 100
}
};
Das outdoors.jpg-Image muss jedem Plattformprojekt hinzugefügt werden, und wie dies erreicht wird, variiert je nach Plattform. Weitere Informationen finden Sie unter Images in Xamarin.Forms.
Hinweis
Abgerundete Ecken verhalten sich plattformübergreifend etwas anders. Das Image
Objekt sollte die Hälfte des Unterschieds zwischen der Bildbreite und der breite des übergeordneten Rahmens Margin
ausmachen und negativ sein, um das Bild gleichmäßig innerhalb des Frame
Objekts zu zentrieren. Die angeforderte Breite und Höhe sind jedoch nicht garantiert, sodass die Margin
Eigenschaften , HeightRequest
und WidthRequest
möglicherweise basierend auf Ihrer Bildgröße und anderen Layoutoptionen geändert werden müssen.