2017-12-29 24 views
0

So versuche ich Text in einer Leinwand zu zentrieren, aber ich kann nicht herausfinden, wie, was ich zur Zeit hier tue dies:Ausrichtung der Leinwand und Text in Leinwand

<Canvas Background="#730D11" Width="138" Height="138" HorizontalAlignment="Right" VerticalAlignment="Center"> 
         <TextBlock Text="S6" Foreground="#EAEAEA" FontSize="50" VerticalAlignment="Center" HorizontalAlignment="Center" Canvas.Left="45" Canvas.Top="34" /> 
        </Canvas> 

Das ist die bekommt Sache gemacht für , aber wenn ich das zum S66 zum Beispiel stelle, fügt es gerade die 6 hinzu und behält es Position ... Ich möchte den Text in der Leinwand zentriert die ganze Zeit behalten.

Auch, dass Canvast ist in einer StackPanel und ich will es auf der rechten Seite des Stack-Panel sein, aber es geht nicht dorthin, wie kann ich das beheben? Hier ist der Code, den ich zur Zeit verwenden:

<Page 
    x:Class="Rittensport_Software.CalculatePage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:Rittensport_Software" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="#E6E6E6"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*"></RowDefinition> 
      <RowDefinition Height="7*"></RowDefinition> 
     </Grid.RowDefinitions> 

     <!--Navigation bar--> 
     <Canvas Grid.Row="0" Background="#073D48" Opacity="0.8"></Canvas> 
     <!--Navigation--> 
     <StackPanel Orientation="Horizontal"> 
      <Image x:Name="mgBackBtn" Source="Assets/Icons/Back.png" Width="96" Height="96" /> 
      <TextBlock Text="REKENBLAD" Foreground="#F8F8F8" FontSize="35" VerticalAlignment="Center" /> 
      <TextBlock Text="(Deel 2)" Foreground="#F8F8F8" FontSize="35" VerticalAlignment="Center" Margin="30,0" /> 
     </StackPanel> 

     <!--There we will put the main shit in (also a grid because it is difficult) --> 
     <Grid Grid.Row="1"> 
      <Grid.RowDefinitions> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 

      <!--Top items--> 
      <Grid Grid.Row="0"> 
       <Grid.RowDefinitions> 
        <RowDefinition></RowDefinition> 
        <RowDefinition></RowDefinition> 
       </Grid.RowDefinitions> 

       <StackPanel Grid.Row="0" Orientation="Horizontal"> 
        <StackPanel Orientation="Horizontal" Margin="140,41,0,0" VerticalAlignment="Top"> 
         <TextBlock Text="Klasse" FontFamily="Verdana" FontSize="35" /> 
         <ComboBox x:Name="ClassSelector" VerticalAlignment="Center" Margin="26,0"/> 

         <TextBlock Text="Nummer" FontFamily="Verdana" FontSize="35" /> 
         <ComboBox x:Name="StartNumbers" VerticalAlignment="Center" Margin="26,0"/> 

         <TextBlock Text="Deel" FontFamily="Verdana" FontSize="35" /> 
         <ComboBox x:Name="InputSegment" VerticalAlignment="Center" Margin="26,0"/> 
        </StackPanel> 
        <!--The current numer selected--> 
        <Canvas Background="#730D11" Width="138" Height="138" HorizontalAlignment="Right" VerticalAlignment="Center"> 
         <TextBlock Text="S6" Foreground="#EAEAEA" FontSize="50" VerticalAlignment="Center" HorizontalAlignment="Center" Canvas.Left="45" Canvas.Top="34" /> 
        </Canvas> 
       </StackPanel> 


       <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="140,0"> 
        <TextBlock Text="Piloot:" FontWeight="Bold" FontSize="35" /> 
        <TextBlock Text="NAAM Voornaam" FontSize="35" Margin="10,0" /> 
        <TextBlock Text="(tel)" FontSize="25" Margin="5,9" /> 

        <TextBlock Text="Navigator:" FontWeight="Bold" FontSize="35" Margin="306,0,0,0" /> 
        <TextBlock Text="NAAM Voornaam" FontSize="35" Margin="10,0" /> 
        <TextBlock Text="(tel)" FontSize="25" Margin="5,9" /> 
       </StackPanel> 

      </Grid> 

      <Grid Grid.Row="1"> 
       <Border BorderBrush="#707070" BorderThickness="0 1 0 0" Margin="70.5,0" /> 
       <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="0,60,0,0"> 
        <TextBlock Text="Gemiste controles" Height="42" VerticalAlignment="Center" Foreground="#0F0F0F" FontSize="35" Margin="140,0,0,0" /> 
        <TextBox PlaceholderText="100" Height="42" VerticalAlignment="Center" /> 
       </StackPanel> 



</Grid> 

     <Grid Grid.Row="2"> 
      <Border BorderBrush="#707070" BorderThickness="0 1 0 0" Margin="70.5,0" /> 
     </Grid> 

    </Grid> 

</Grid> 

Das Ergebnis, das ich erreichen möchte ist folgendes:

result

Aber es so sein, adaptive auf alle Bildschirme und nicht statisch ...

Antwort

0

Ich möchte den Text in der Leinwand die ganze Zeit zentriert halten

Canvas ist für die absolute Positionierung von untergeordneten Elementen gemeint mit Canvas.Left und Canvas.Top Eigenschaften. Werte von HorizontalAlignment und VerticalAlignment Eigenschaften seiner Kinder haben keinen Einfluss auf das Layout. So positionieren Sie den Text in der Mitte Verwendung Grid statt Canvas:

<Grid Background="#730D11" Width="138" Height="138"> 
    <TextBlock Text="S6" Foreground="#EAEAEA" FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
</Grid> 

Das Canvast ist in einem Stackpanel und ich möchte es auf der rechten Seite dieses Stapels Platte sein, aber das ist noch nicht gehen

StackPanel wird nur so groß wie nötig, um alle untergeordneten Elemente anzupassen. Da kein leerer Bereich darin ist, macht es keinen Unterschied, ob die Eigenschaft HorizontalAlignment des Kindes auf Left oder Right gesetzt ist. Um den Inhalt richtig auszurichten, verwenden Sie Grid oder RelativePanel.

+0

Das hat den Trick! Danke!!!! – Robin

+0

@Robin Gern geschehen! –