有关C# WPF里窗口尺寸的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关C# WPF里窗口尺寸的问题相关的知识,希望对你有一定的参考价值。

正常情况下,窗口的this.Width和this.Height就是宽高,窗口最大化或者最小化的时候,取到的this.Width和this.Height是点还原情况下的宽高,也就是说不是最大化或者最小化的宽高。
比如我一开始设了this.Width=800,this.Height=600,
窗口起来的时候不是最大化的,之后手动点了最大化,
关闭的时候去取得的this.Width和this.Height还是800和600。

但是如果窗口一起来的时候就是最大化的,虽然这时候点还原可以回到800*600。
但是如果什么也不做就去关闭,这时候取道的this.Width和this.Height就是最大化的那个尺寸。

有没有什么明确的方法分别取得一个窗口最大化,最小化,和还原时候的尺寸?

this.Width和this.Height是在窗口loaded的时候人为给控件的加载高宽。控件的尺寸可能是随时变化的,你要实时获取控件尺寸,那就在后台获取它的ActualWidth和ActualHeight即可。追问

感谢你的回答,接下来的追问回答不回答我都会把这个选为满意回答。

不过我更想知道的是,如果我已经在最大化和最小化的情况下了。怎样获得点“还原”的尺寸。
一般情况下都会认为是this.Width和this.Height对吧?
但是上面的例子也说了,如果我创建出这个window的时候就同时设了this.Width=800,this.Height=600并且也设了最大化。这时候无论我是取Width还是ActualWidth,得到的都是最大化的窗口大小,而不是800。

参考技术A 最大化不就是全屏了嘛,拿到屏幕分辩率就对了三 参考技术B 只有 800*600的

c#怎样动态判断wpf窗口某一区域是不是有控件存在

参考技术A 我是这么理解的。首先在wpf里,用来区分区域的应该是各种“容器”控件,如canvas,Grid。。。然后在这些容器里面再放置控件。后台进行判断的话,就只要判断Canvas.child是不是为null或者grid的children的数量是否为0.本回答被提问者采纳 参考技术B VisualTreeHelper.HitTest 方法 //通过指定 Point 返回命中测试的最顶层 Visual 对象。
Point pt = e.GetPosition((UIElement)sender);
HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);
if (result != null)

// Perform action on hit visual object.
参考技术C foreach遍历controls

以上是关于有关C# WPF里窗口尺寸的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在功能区窗口wpf c#中显示状态栏

这样的窗口如何做(WPF项目)

WPF C#怎么窗体间传值

WPF 窗口大小问题

当窗口垂直调整为更小的尺寸时,避免 WPF 状态栏完全折叠

禁用 WPF 窗口标题栏中的关闭按钮 (C#)