View

Gehe in die MainWindowView und öffne die Toolbox, indem du im Menü View - Toolbox auswählst.
Wenn du oben in der Leiste der Toolbox auf die Stecknadel klickst, wird jene angeheftet.

Such nun nach dem Button und dragge ihn in den Designer. Das Ergebnis sollte in etwa wie folgt aussehen:

Wenn du nun einen Blick in den XAML Code auf der rechten Seite, bzw. unter dem Designer wirfst, wirst du festellen, dass ein Button-Element erstellt wurde. Selbstverständlich kannst du einen neuen Button auch direkt im XAML-Code anlegen.

Ich würde dir raten, den Designer und den XAML-Code nebeneinander anzuzeigen, du kannst dies mit den Buttons zwischen den beiden Ansichten umschalten, du findest sie ganz rechts bzw. unten.

Über Tools(Menüleiste) - Options(ganz unten) - XAML Designer(auch ganz unten) kannst du bei dem Punkt Split Orientation auch einen default Wert angeben, sodass du dies nicht immer manuell umschalten musst.

Der Übersichtlichkeits halber ordne ich die Attribute eines XAML-Elements immer untereinander an.

Aufgabe 1

Modifiziere den Button so, dass folgende Punkte erfüllt sind:

  • In dem Button steht "Klick mich :)"
  • Der Button hat die Maße 120 * 25
  • Der Button ist genau in der Mitte
Lösung Aufgabe 1:
<Window x:Class="DateiverwaltungPro.Views.MainWindowView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindowView"
        Height="350"
        Width="525">
    <Grid>
        <Button Content="Klick mich :)"
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Width="120"
                Height="25"/>
    </Grid>
</Window>

Das Attribut x:Name sorgt übrigens dafür, dass ein Element einen eindeutigen Namen bekommt, mit welchem wir dieses im Code-behind ansprechen können.

Anordnung von Elementen

Das oberste Element in dieser View ist ein Window; dieses kann nur ein Kind haben, welches idR. ein Grid ist.
Es gibt auch noch andere Elemente, die nur ein Kind haben können, ein Grid hingegen kann beliebig viele Kinder haben.

Aufgabe 2

  • Lösche den Button
  • Erstelle in deinem Grid ein weiteres Grid
  • Platziere in diesem Grid einige Buttons, sodass es wie der Nummernblock rechts auf der Tastatur aussieht
  • (Bonus) gib dem Grid einen hellgrauen Hintergrund und mach es schön.
Tipps:

Du kannst in einem Grid Reihen und Spalten definieren:

<Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
    <RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="2*" />
    <ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>

Diese beiden Elemente musst du ins Grid packen.
Eine Spalte mit Auto nimmt sich so wenig Platz wie nötig, eine Spalte mit * hingegen soviel wie möglich. 2* und 3* sorgen für ein Verhältnis von zwei zu drei.
In den Elementen im Grid musst du dann noch angeben, in welche Reihe und Spalte sie gehören, das tust du mit den Attributen Grid.Row="2" und Grid.Column="3".
Bedenke, dass man in der Informatik bei 0 anfängt zu zählen.
Soll ein Element mehr als eine Reihe bzw. Spalte umfassen, z.B. zwei, so kannst du zusätzlich das Attribut Grid.RowSpan="2" bzw. Grid.ColumnSpan="2" angeben.

Mit dem Attibut Margin lassen sich Abstände nach außen, mit Padding nach innen definieren. Gib eine Zahl für einen gleichmäßigen Abstand oder zwei, mit Kommas getrennnte, Zahlen für den horizontalen und vertikalen Abstand an. Wenn du vier Zahlen angibst, so stehen diese für individuelle Abstände (links, oben, rechts, unten).

Lösung Aufgabe 2:

Das Ganze könnte in etwa folgendermaßen aussehen:

Der Quellcode:

<Window x:Class="DateiverwaltungPro.Views.MainWindowView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindowView"
        Height="350"
        Width="525">
    <Grid>
        <Grid Width="200"
              Height="250"
              Background="#FFF0F0F0">
            <Grid.RowDefinitions>
                <RowDefinition Height="5" />
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="40" />
                <RowDefinition Height="5" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="5" />
                <ColumnDefinition Width="50" />
                <ColumnDefinition Width="50" />
                <ColumnDefinition Width="50" />
                <ColumnDefinition Width="40" />
                <ColumnDefinition Width="5" />
            </Grid.ColumnDefinitions>

            <!-- first column -->
            <Button Grid.Row="1"
                    Grid.Column="1"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="Num"/>

            <Button Grid.Row="2"
                    Grid.Column="1"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="7"/>

            <Button Grid.Row="3"
                    Grid.Column="1"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="4"/>

            <Button Grid.Row="4"
                    Grid.Column="1"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="1"/>

            <Button Grid.Row="5"
                    Grid.Column="1"
                    Grid.ColumnSpan="2"
                    Width="90"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="0"/>

            <!-- second column -->
            <Button Grid.Row="1"
                    Grid.Column="2"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="/"/>

            <Button Grid.Row="2"
                    Grid.Column="2"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="8"/>

            <Button Grid.Row="3"
                    Grid.Column="2"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="5"/>

            <Button Grid.Row="4"
                    Grid.Column="2"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="2"/>

            <!-- third column -->
            <Button Grid.Row="1"
                    Grid.Column="3"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="*"/>

            <Button Grid.Row="2"
                    Grid.Column="3"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="9"/>

            <Button Grid.Row="3"
                    Grid.Column="3"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="6"/>

            <Button Grid.Row="4"
                    Grid.Column="3"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="3"/>

            <Button Grid.Row="5"
                    Grid.Column="3"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content=","/>

            <!-- fourth column -->
            <Button Grid.Row="1"
                    Grid.Column="4"
                    Width="40"
                    Height="40"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="-"/>

            <Button Grid.Row="2"
                    Grid.Column="4"
                    Grid.RowSpan="2"
                    Width="40"
                    Height="90"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="+"/>

            <Button Grid.Row="4"
                    Grid.Column="4"
                    Grid.RowSpan="2"
                    Width="40"
                    Height="90"
                    VerticalAlignment="Top"
                    HorizontalAlignment="Left"
                    Content="Enter"/>
        </Grid>
    </Grid>
</Window>

Es gibt selbstverständlich verschiedene Möglichkeiten dies umzusetzen.
Wenn du z.B. nur mit Margin und ohne Column- und Row-Definitions gearbeitet hast, dann wäre es umständlicher, den Abstand auf z.B. 15 zu erhöhen.


Bei XAML wird bei Größenangaben übrigens nicht in Pixeln gerechnet, damit das Ergebnis auf verschiedenen Bildschirmen mit unterschiedlicher Pixeldichte (dpi) möglichst gleich aussieht, die Größenordnung ist aber in etwa die Selbe. Du könntest dem Window z.B. auch die Höhe 10cm verpassen.

Kommentieren Kommentare