我想知道在WPF中是否有一种自动控制大小的功能。
我的意思是,一种根据用户的屏幕分辨率自动调整元素大小的方法,而不必在代码中定义它。
谢谢。
发布于 2009-10-26 06:32:15
首先,WPF使用设备独立的树状像素,这意味着它将根据用户选择的DPI进行适当缩放。也就是说,我不认为你在这里问的是DPI,而是你问的是分辨率缩放。
如果希望UI缩放到窗口提供的可用空间,可以使用a ViewBox control作为窗口的根元素。然后,你放在里面的所有东西都会根据你配置Viewbox的方式进行缩放。
请记住,这不是应用程序使用的典型方法,因为它们通常会自动增长/回流以利用更多空间。例如,可以使用Grid在UI空间中给出比另一个更重要的部分。
发布于 2009-11-07 07:50:39
答案是肯定的。如果希望控件根据窗口的大小调整其大小,有许多方法可以做到这一点。
对于几乎所有的控件,这些都是有用的:
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="..." (set your margin to control the position)对于使用网格的灵活布局,请执行以下操作:
<Grid>
ColumnDefinition.Width="*"
RowDefinition.Height="*"对于由面板包围的中心区域,或填充行/列的其余部分:
<DockPanel>为了保持某物的形状不变,但将其拉伸或缩小以适合它:
<ViewBox>还有很多其他的。
如果你想让你的控件在屏幕上根据用户的窗口显示设置来变大或变小,比如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;https://stackoverflow.com/questions/1622171
复制相似问题