2011-07-12 38 views
0

因此,我在我的顯示器上創建了一個WPF應用程序,該應用程序具有較高的高度(1280 vs 1024)分辨率。它在我的顯示器上工作正常。管理WPF中的應用程序高度(表示高度佔屏幕高度的百分比)

但是,當我把它帶到不同分辨率的顯示器時,整個應用程序會超出顯示器,因此不可用。

任何想法如何我們可以糾正這一點。我的控件和窗口高度的所有高度都是固定的

+0

您是否以像素爲單位設置窗口大小? – Vale

+0

@Vale:我使用高度爲單位(設備無關)。它在我的顯示器上效果很好,但它不適用於較小的顯示器。我會在Matthew的回答中試用這個方法 – ganeshran

+0

@Smudge:對不起,我不知道我們必須將帖子標記爲回答自己。我通常在評論中感謝海報。我回去,並標記更多回答問題 – ganeshran

回答

1

這很簡單。減少窗戶的高度。你爲什麼使用大的固定高度窗口?顯然,我不知道你的應用程序的設計,但正如你很快發現的那樣,固定的高度(和寬度)往往不能移植到不同的硬件上。

真正的解決方案可能是使用WPF Grid控件。所有的控件都應該放在網格中,它填充整個窗口。根據您設置網格行和列的方式,隨着窗口大小的變化,您的控件的大小將會縮小。

假設你有四個控件要均勻堆放在你的網格中。你可以這樣做:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height=".25*"/> 
     <RowDefinition Height=".25*"/> 
     <RowDefinition Height=".25*"/> 
     <RowDefinition Height=".25*"/> 
    </Grid.RowDefintions> 
    <MyControl Grid.Row="0"/> 
    <MyControl Grid.Row="1"/> 
    <MyControl Grid.Row="2"/> 
    <MyControl Grid.Row="3"/> 
</Grid> 

現在每個控制將可用空間的25%,和WPF處理一切爲你的窗口大小的變化。你可以做比這更復雜的佈局,但希望這可以讓你開始。

+0

喜馬修 - 這是我的主窗口的XAML 高度= 「自動」 WIDTH = 「750」 MaxWidth = 「750」 背景= 「{DynamicResource MainBackgroundBrush}」 MinWidth = 「700」 了minHeight = 「800」 所以我不應該在應用程序中設置任何高度? – ganeshran

+0

我剛剛發現我已經設置了minHeight。也許這是造成這個問題。我將它刪除並立即測試。 – ganeshran

1

WPF的設計並不像WinForms那樣,絕對控制寬度,高度和位置會導致這些情況。它的設計是流暢的,允許控件包裝(請參閱WrapPanel),展開和摺疊(請參閱自動或*尺寸)。如果你像WinForms一樣對待它,你會遇到這些問題,並且必須提出複雜的解決方法。 WPF被設計爲解決這些複雜變通辦法(其中包括)的永久解決方案

嘗試尋找WPF的基礎教程,以瞭解如何佈置UI。

希望有所幫助。

+0

我不應該在窗口的高度和寬度輸入任何東西嗎?它會自動填充到屏幕的其餘部分嗎? – ganeshran

+0

你需要應用程序來填充屏幕?我傾向於使用盡可能小的屏幕空間來開發我的WPF應用程序,而應用程序仍然有用。我將這些尺寸設置爲minHeight和minWidth。然後展開您的應用,看看它是如何調整大小的,理想情況下,一切都應該專門增長,並且仍然保持您的應用的外觀和感覺。如果要填充屏幕,請執行最後兩點,然後在應用程序啓動時將應用程序設置爲最大化窗口狀態。 – Smudge202