2009-10-25 145 views
3

我想知道WPF中是否有一種自動控件大小調整。WPF:自動控件大小調整

我的意思是,一種方法來自動調整元素與用戶的屏幕分辨率有關,而無需在代碼中定義它。

謝謝。

+0

您可以舉一個你想要做什麼的例子嗎?你可以直接寫 2009-10-25 22:28:28

回答

3

首先,WPF使用設備獨立像素,這意味着它將根據用戶選擇的DPI進行適當縮放。也就是說,我不認爲你在這裏問DPI,而是問你是否在提高分辨率。

如果您希望您的UI縮放到窗口提供的可用空間,則可以使用a ViewBox control作爲窗口的根元素。然後,你放在裏面的所有東西都會根據你配置Viewbox的方式進行縮放。

請記住,這不是應用程序使用的典型方法,因爲它們通常會自行增長/重排以利用更多空間。例如,一個網格可以用來給UI空間的另一個更重要的部分。

3

答案是YES。如果您希望您的控件根據窗口的大小調整其大小,有很多方法可以實現。使用網格

HorizontalAlignment="Stretch" 
VerticalAlignment="Stretch" 
Margin="..." (set your margin to control the position) 

對於靈活的佈局:

<Grid> 
ColumnDefinition.Width="*" 
RowDefinition.Height="*" 

對於由面板,或填充一個行/列的其餘部分環繞中心區域

對於幾乎任何控制這些是有用的:

<DockPanel> 

爲了保持相同的形狀,但伸展或縮小它適合:

<ViewBox> 

還有很多其他的。

如果你希望你的控制,以獲得更大的或基於用戶的Windows顯示設置,如DPI,屏幕較小將默認發生。如果用戶使系統圖標和字體更大,則文本,圖標,字體等也會更大。

如果要配合你的對象的大小屏幕專用的系統設置,您可以綁定到SystemParameters和SystemFonts類的屬性,如:

SystemFonts.CaptionFontSize 
SystemFonts.MenuFontSize 
SystemFonts.IconFontSize 
SystemFonts.StatusFontSize 

SystemParameters.IconHeight 
SystemParameters.IconVerticalSpacing 
SystemParameters.MaximizedPrimaryScreenHeight 

大約有75這些設置。通常情況下,你不會使用這些,因爲WPF對基於DPI的對象大小進行的正常調整通常就足夠了。

通常情況下,您不希望強制屏幕上的對象成爲特定數量的像素,因爲即使最終用戶將Windows配置爲顯示較大的事物,它們在高分辨率屏幕上也會顯得很小。這不會是一件好事。這裏的一個例外是,如果你想截圖作爲特定屏幕分辨率的位圖。在這種情況下,您可以按如下方式設置您的尺寸:

control.Height = 
    desiredHeightInActualScreenPixels 
    * System.Windows.SystemParameters.MenuHeight 
    /System.Windows.Forms.SystemInformation.MenuHeight;