2016-09-18 56 views
0

這是我的XAML:爲什麼2個按鈕仍然重疊

<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> 

當我點擊左鍵,我想TOP2按鈕,向左走,以避免與TOP1按鈕重疊。這裏是我的背景代碼:

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); 
} 

但是在結果中,top1和top2仍然重疊。 enter image description here

爲什麼會發生這種情況?以及如何解決?

+2

因爲'Grid'元素可以重疊,並且您的按鈕在給定空間內水平居中 – dkozl

回答

-1

使用行定義,列定義以及用於按鍵設定能見度可以解決這個問題

-1

按鈕給定的空間內被水平居中。 爲了解決這個問題,我必須將保證金一倍:

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); 
} 

但是,這是正確的,只有當TOP2不隨其佈局的邊緣到達。如果top2部分偏離左邊緣,那麼我們不需要將邊距加倍。 top2的左側和右側都被修剪。