讓我們假設你有一個WPF窗口,其中一個元素隨着窗口大小的改變而改變它的大小,比如DockPanel
有兩個元素。您最大化窗口,第二個元素也得到最大化。所以我不能讀取它的高度/寬度,這些將是最大值(這對我的目的來說足夠好,所以我不必擔心任務欄是否需要一些空間或類似問題)。如何計算元素的最大寬度/高度?
好的,但讓我們回到剛剛啓動的窗口 - 我想計算給定元素的最大寬度/高度,而不實際調整窗口的大小,只是純粹的計算。它可行嗎?怎麼樣?
讓我們假設你有一個WPF窗口,其中一個元素隨着窗口大小的改變而改變它的大小,比如DockPanel
有兩個元素。您最大化窗口,第二個元素也得到最大化。所以我不能讀取它的高度/寬度,這些將是最大值(這對我的目的來說足夠好,所以我不必擔心任務欄是否需要一些空間或類似問題)。如何計算元素的最大寬度/高度?
好的,但讓我們回到剛剛啓動的窗口 - 我想計算給定元素的最大寬度/高度,而不實際調整窗口的大小,只是純粹的計算。它可行嗎?怎麼樣?
如果我正確理解你,你想知道窗口的最大尺寸。那將是屏幕的大小。屏幕尺寸是一個可用值:
System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight
也許你可以做這樣的事情:窗口
謝謝,但我想獲得窗口給定元素的最大寬度/高度,而不是最大化整個窗口。例如它可以是'ListBox'。 – astrowalker
我編輯了我的答案。也許可以暗示正確的方向 –
你太棒了! 「當然」 - 當你知道答案時:-) – astrowalker
您可以創建一個測試窗口,顯示爲最大化,獲取其寬度和高度,然後關閉它。 假設您將檢查屏幕分辨率是否未更改,則可以在每次需要計算值時或在應用程序的開始時執行此操作。
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
}
謝謝,但在我的情況下,在開始時最大化窗口並且然後恢復正常更簡單。但是,當然,完全取消調整大小會很好。 – astrowalker
你想要計算寬度和高度的元素是什麼?根據你想要計算的信息?你不能簡單地訪問該元素的屬性,並獲得寬度和高度? – pijemcolu
@pijemcolu,'ListBox','TextBox',任何元素。 「高度」給你當前的高度,而不是最大值。 – astrowalker
根據您認爲某個元素的最大寬度高度值是什麼? – pijemcolu