你好我有一个带标签和文本框的窗口(wpf),我希望他尽可能地适应屏幕分辨率, 我该怎么做
答案 0 :(得分:25)
如果您需要在调整窗口大小时按比例缩放窗口内容(例如最大化窗口),Viewbox非常有用。在这个简约的页面中
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Viewbox>
<StackPanel>
<TextBlock FontSize="14">Example</TextBlock>
<Border Background="Aqua" Width="100" Height="100"></Border>
</StackPanel>
</Viewbox>
</Window>
你有一个TextBlock和一个垂直堆叠的彩色边框;如果你启动这个xaml,窗口的大小将为300x300,TextBlock的字体大小为14,彩色边框的大小为100x100。如果您重新缩放窗口,您将相应地看到TextBlock和Border缩放(因此它们将不再是您在xaml中指定的大小),保持相对比例。在这方面,Viewbox非常有用,如果你需要一个窗口,其内部组件布局看起来总是独立于它将显示的最终分辨率(重要的是宽高比,思考)。这显然适用于你放在Viewbox中的任何内容(我们有一个带有视频和3D视图的应用程序)。请注意,在Visual Studio 2008中,您将无法在Designer中看到Viewbox的内容。
希望得到这个帮助。
答案 1 :(得分:2)
如果你想真正扩展所有内容,包括字体大小,你可以对你的内容应用缩放变换,并将它的X和Y值绑定到窗口的宽度和高度。然后,您还需要一个值转换器来将它们转换为适当的比例。
答案 2 :(得分:1)
如果要将所有内容扩展到窗口大小,只需将所有内容放在Viewbox控件中即可。
答案 3 :(得分:0)
你的意思是你想让窗户填满整个屏幕吗?最简单的方法(不会引起进一步的麻烦)是最大化窗口。
w.WindowState = WindowState.Maximized;
编辑:
可伸缩窗口布局要求您避免在Visual Studio中使用XAML编辑器!实际上你可以在编辑器中做到这一点,但这很难。
手动编写XAML要容易得多:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Grid.Row="0">First Name</Label>
<TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox>
<Label Grid.Column="0" Grid.Row="1">First Name</Label>
<TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox>
</Grid>
这将适合窗口的大小,但可能看起来很奇怪,因为行和列默认会占用每个空间的一半。您可以覆盖它,以便它们的高度由其内容决定:
<RowDefinition Height="Auto"/>
它还可以帮助将边距放在某些控件上,以便将它们分开:
<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox>
答案 4 :(得分:0)
将 WindowState =“ Maximized” 添加到窗口
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" WindowState="Maximized" >
</Window>