none
在silverlight5中,两次设置ChildWindow的Margin属性,为何会使得ChildWindow的位置发生更改? RRS feed

  • 问题

  • 先描述一下我想实现的功能:
    我创建了一个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?求大神解释,

    多谢,





    2014年12月16日 8:07

答案

  • 你好:

    你第二次点击button时候会把位置等信息赋值给模(后面的阴影部分)。

    所以不要把位置赋值信息放在事件处理方法里。

    或者你可以提交的要求到connect site,让silverlight开发人员了解你的需求:

    http://connect.microsoft.com/


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.




    • 已标记为答案 Jonny_D 2014年12月29日 3:31
    2014年12月17日 5:31