以编程方式更改Ellipse C#的边距

时间:2017-01-31 13:46:41

标签: c# wpf visual-studio-2015 .net-4.0

我正在写一个小时间管理工具,它显示我何时可以离开以履行合同工时。 该工具如下所示:Tool Screenshot 我想让它可调整大小,所以我试图设置窗口高度和宽度的所有形式。这看起来像

     public void resizeElements()
    {
        clockBody.Height = this.Height / (300/248);
        clockBody.Width = this.Width / (300/248);
        double marginClock = Math.Round((this.Height - clockBody.Height) / 2);
        clockBody.Margin = new Thickness(marginClock);
        recHr.Height = this.Height / (300 / 50);
        recHr.Width = this.Width / (300/6);
        recMin.Height = this.Height / (300/80);
        recMin.Width = this.Width / (300 / 4);
        recSec.Height = this.Height / (300/118);
        recSec.Width = this.Width / (300/4);
    }

正如你在图片中看到的那样,clockbody没有Window那么大,所以我尝试将它设置为Math.Round((this.Height - clockBody.Height) / 2);,但这会引发System.ArgumentException调用:

  

' System.ArgumentException'在WindowsBase.dll中("'自动,自动,自动,自动'不是有效的属性值'保证金'。")

如果我编辑代码clockBody.Margin = new Thickness(26);((300-248)/ 2),我可以运行应用程序。但那不是动态的。有任何想法吗?

1 个答案:

答案 0 :(得分:2)

尝试使用ActualWidthActualHeigth属性,而不是WidthHeight