Margin调整控件的位置
我想实现调整一个控件在其容器控件中的位置,我使用了margin进行调整,代码如下:
- C# code
// xaml部分<Window x:Class="MarginTest.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid x:Name="outsidegrid" Background="Black" MouseLeftButtonDown="outsidegrid_MouseLeftButtonDown" MouseRightButtonDown="outsidegrid_MouseRightButtonDown"> <Grid x:Name="insidegrid" Background="LightBlue" Width="200" Height="200"> <Grid x:Name="rectGrid" Background="Red" Width="50" Height="50" HorizontalAlignment="Left" VerticalAlignment="Top"> </Grid> </Grid> </Grid></Window>
- C# code
// C#代码部分 /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void outsidegrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { rectGrid.Margin = new Thickness(-20, -20, 0, 0); } private void outsidegrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { rectGrid.Margin = new Thickness(180, 180, 0, 0); } }
用意就是想在左键按下的时候将rectGrid移动到insidegrid的左上角,按下右键的时候将rectGrid移动到insidegrid的右下角。
问题发生了:
当我按下左键的时候,rectGrid移动到了insidegrid的左上角,但是超出insidegrid的部分被显示出来了,也就是看到了rectGrid的一部分超出到insidegrid外边去了(并且超出的部分被显示出来了),而当我按下右键的时候,rectGrid被移动到了insidegrid的右下角,但这时,rectGrid超出insidegrid的部分却没有被显示,请问这是为什么呢?
如果我想在左上或者右下角,rectGrid超出其容器控件insidegrid的部分都被显示(或都被隐藏)应该如何操作呢?
多谢指点!
[解决办法]
加了margin 你需要把控件宽度变窄。。。。
HTML的占位是width+padding+border+margin
看看HTML教程吧,别做拖控件的