尝试搜索谷歌,但我很难找到答案。
我有一个基本的WPF应用程序,其中包含一些控件。当我最大化应用程序时,屏幕上的控件保持相同的大小,我得到了很多浪费的空间。
有没有办法让控件随主窗口的大小动态增长和缩小?
亲切的问候
灰
答案 0 :(得分:4)
不要为控件设置固定的高度和宽度属性。 而是设置,水平和垂直对齐以拉伸。并确保您的控件包含在适当的布局面板中。
例如 -
固定尺寸网格:
<Grid Background="Red" Width="50" Height="50"/>
动态消费网格:
<Grid Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
答案 1 :(得分:2)
你需要的不是调整大小,它叫做缩放(或缩放); - )
阅读这篇文章; WPF的任务非常简单。
(以前在Windows窗体中要复杂得多......)。
UI Scaling (UI Zooming) with WPF
基本上你需要添加到XAML的是:
<ScaleTransform
CenterX="0" CenterY="0"
ScaleX="{Binding ElementName=uiScaleSlider,Path=Value}"
ScaleY="{Binding ElementName=uiScaleSlider,Path=Value}"
/>
之后你可以使用鼠标滚轮或滑块或任何其他方式(如你的情况下检测表单最大化)来修改Value
的{{1}}。
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以使用内容装饰器来拉伸和缩放单个子级以填充可用空间 - Viewbox。
答案 4 :(得分:1)
这没问题。控件的行为取决于您使用的容器以及水平和垂直对齐。例如,如果使用Grid,TextBox和具有水平和垂直对齐的Button:Stretch和width and height auto,Textfield和Button将动态增长和缩小。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<TextBox Margin="8,8,8,104.96" TextWrapping="Wrap" Text="TextBox" Height="auto" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<Button Content="Button" Margin="8,0,8,8" VerticalAlignment="Bottom" Height="92.96" Width="auto" HorizontalAlignment="Stretch"/>
</Grid>
答案 5 :(得分:0)
使用像Grid这样的可调整大小的控件,并将所有控件放在行/列中。还要为每个控件设置HorizontalAlignment以进行拉伸。