先描述一下我想实现的功能:
我创建了一个ChildWindow1子窗体,然后我想把ChildWindow1子窗体显示在页面的【左上角】,边距为【Margin="100,100,0,0"】,由于我要多次打开这个ChildWindow1,所以我将ChildWindow1定义为类全局变量,然后在打开ChildWindow1的方法中动态设置ChildWindow1的【对齐方式】和【边距Margin】,
代码如下:
public partial class Page1 : Page
{
private ChildWindow1 _childWindow1 = new ChildWindow1();
private async void button1_Click(object sender, RoutedEventArgs e)
{
// 打开 ChildWindow1
_childWindow1.HorizontalAlignment = HorizontalAlignment.Left;
_childWindow1.VerticalAlignment = VerticalAlignment.Top;
_childWindow1.Margin = new Thickness(100d, 100d, 0d, 0d);
_childWindow1.Show();
}
}
但这样做却出现了个问题:
第一次点击button1,弹出的ChildWindow1确实在左上角,边距为【100,100,0,0】
但,关闭ChildWindow1后,第二次(以及后续)点击button1时,弹出的ChildWindow1边距却不是【100,100,0,0】,大概是【200,200,0,0】,
然后我继续修改代码:
public partial class Page1 : Page
{
private ChildWindow1 _childWindow1 = new ChildWindow1()
{
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
Margin = new Thickness(100d, 100d, 0d, 0d),
}
private async void button1_Click(object sender, RoutedEventArgs e)
{
// 打开 ChildWindow1
_childWindow1.Show();
}
}
这次就对了,
但我始终不明白,为何多次设置Margin的值,会导致错误的行为呢?这是不是bug?求大神解释,
多谢,