2016-09-18 7 views
0

Hier meine XAML ist:Warum die 2 Tasten sind noch überlappen

<Grid> 
     <Button x:Name="top1" Content="top" Width="200" Height="50" VerticalAlignment="Top" HorizontalAlignment="Center"/> 
     <Button x:Name="top2" Content="top" Width="100" Height="25" VerticalAlignment="Top" HorizontalAlignment="Center"/> 
     <Button x:Name="left" Content="left" Width="200" Height="50" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,0,0,0" Click="Button_Click"/> 
    </Grid> 

Wenn ich Knopf links klicken, ich die top2-Taste gehen Sie nach links wollen mit top1 Taste zu vermeiden überlappt. Hier ist mein Hintergrund Code:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var offset = this.top1.ActualWidth + this.top2.ActualWidth/2; 
    this.top2.Margin = new Thickness(0, 0, offset, 0); 
} 

Aber im Ergebnis top1 und top2 noch überlappen. enter image description here

Warum das passiert? und wie löst man?

+2

Da 'Grid'-Elemente sich überlappen können und Ihre Schaltflächen innerhalb des angegebenen Bereichs horizontal zentriert sind – dkozl

Antwort

-1

Verwenden von Zeilendefinitionen, Spaltendefinitionen und Einstellung Sichtbarkeit für Taste könnte das Problem

-1

Die Tasten lösen sind horizontal innerhalb gegebenen Raum zentriert. Um dies zu lösen, ich habe die Marge zu verdoppeln:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var offset = this.top1.ActualWidth + this.top2.ActualWidth; 
    this.top2.Margin = new Thickness(0, 0, offset, 0); 
} 

Dies ist aber nur dann richtig, wenn die top2 über den Rand seines Plans nicht erreicht. Wenn Top2 teilweise außerhalb der linken Kante ist, brauchen wir den Rand nicht zu verdoppeln. Und sowohl die linke Seite als auch die rechte Seite von top2 sind getrimmt.

Verwandte Themen