如何获得WPF窗口的ClientSize?

Joe*_*ite 18 size wpf

在WinForms中,Form有一个ClientSize属性(继承自Control),它返回其客户区的大小,即标题栏和窗口边框内的区域.

我在WPF中没有看到任何类似的东西:没有ClientSize,ClientWidth,ClientHeight,GetClientSize(),或者我可以想到的其他任何猜测名称的东西.

如何获取WPF窗口的客户端大小?

Cod*_*313 11

你可以做到的一种方法是取最顶层的子元素,转换this.Content为它的类型,并调用.RenderSize它,这将给你它的大小.

<Window x:Class="XML_Reader.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="400" Width="600" WindowStyle="SingleBorderWindow">
    <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    </Grid>
</Window>

((Grid)this.Content).RenderSize.Height
((Grid)this.Content).RenderSize.Width
Run Code Online (Sandbox Code Playgroud)

编辑:

作为特伦特说,ActualWidthActualHeight也是可行的解决方案.基本上更容易获得上面提到的方法.


小智 10

var h = ((Panel)Application.Current.MainWindow.Content).ActualHeight;
var w = ((Panel)Application.Current.MainWindow.Content).ActualWidth;
Run Code Online (Sandbox Code Playgroud)