假设您有一个WPF窗口,其中一个元素会随着窗口大小调整而改变大小,请说DockPanel
有两个元素。您最大化窗口,第二个元素也最大化。所以我不能读取它的高度/宽度,这些值是最大值(这对我的目的来说已经足够了,所以如果任务栏占用一些空间或类似的问题,我不必担心。)
好的,但让我们回到刚刚启动的窗口 - 我想计算给定元素的最大宽度/高度而不实际调整窗口大小,只是纯粹的计算。它可行吗?怎么样?
答案 0 :(得分:1)
如果我理解正确,你想知道窗口的最大尺寸。那将是屏幕的大小。 Screensize是一个可用值:
System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight
也许你可以这样做:
答案 1 :(得分:1)
您可以创建一个显示为最大化的测试窗口,获取其宽度和高度然后将其关闭。 这可以在每次需要计算值时或在应用程序开始时完成,假设您将检查屏幕分辨率是否未更改。
private void GetMaximumWidthAndHeight(FrameworkElement element)
{
var testWindow = new Window();
testWindow.Visibility = Visibility.Collapsed;
testWindow.ShowInTaskbar = false;
testWindow.WindowState = WindowState.Maximized;
testWindow.Show();
var maximizedWindowHeight = testWindow.ActualHeight;
var maximizedWindowWidth = testWindow.ActualWidth;
testWindow.Close();
var maxToCurrentHeightRatio = maximizedWindowHeight / this.ActualHeight;
var maxToCurrentWidthRatio = maximizedWindowWidth / this.ActualWidth;
var maximumElementHeight = element.ActualHeight * maxToCurrentHeightRatio;
var maximumElementWidth = element.ActualWidth * maxToCurrentWidthRatio;
// Do something with the values
}