wpf 缩放视图框内所有控件的高度和宽度

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12376479/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 05:18:41  来源:igfitidea点击:

Scale height and width of all control inside viewbox

.netwpfxaml

提问by Thomas

I am new to WPF. In my code i have a simple WPF window with a few controls. All the controls are contained in the View Box. My problem is that when i resize the the window, the control size text is not resizing proportionately. Here is my code:

我是 WPF 的新手。在我的代码中,我有一个带有几个控件的简单 WPF 窗口。所有控件都包含在视图框中。我的问题是,当我调整窗口大小时,控件大小文本没有按比例调整大小。这是我的代码:

<Window x:Class="DesktopGoogleReader.UIelements.About"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="About" Height="346" Width="435"
    >
    <Window.Background>
        <LinearGradientBrush StartPoint="0,0" EndPoint="0,0.5">
            <LinearGradientBrush.GradientStops>
                <GradientStop Offset="0" Color="#eee" />
                <GradientStop Offset="1" Color="#ccc" />
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
    </Window.Background>
    <Viewbox Stretch="Uniform">
        <Grid>        
        <Label Height="41" Margin="83,12,12,0" Name="label1" VerticalAlignment="Top" FontSize="20" FontWeight="Bold">Desktop Google Reader</Label>
        <Image Margin="348,0,0,0" Name="image1" Stretch="Fill" Height="65" HorizontalAlignment="Left" VerticalAlignment="Top" Width="65" Source="C:\Users\TRIDIP\Desktop\tmp\Desktop Google Reader WPF good UI\trunk\DesktopGoogleReader\DesktopGoogleReader.ico" />
        <Label Height="28" Margin="92,49,12,0" Name="label_versionName" VerticalAlignment="Top">Version: Versionnumber</Label>
        <TextBlock Margin="12,83,12,0" Name="textBlock1" Height="54" VerticalAlignment="Top" Text="Desktop Google Reader is Windows / .NET based client to the RSS aggregation service Google Reader. It is licensed under the New BSD License (BSD). It is developed by Konstantins Onufrijevs and Sven Walther" TextWrapping="Wrap" />
        <Label Margin="12,134,12,0" Name="label2" Height="29" VerticalAlignment="Top">Credits: Desktop Google Reader uses the following external resources:</Label>
        <Button HorizontalAlignment="Left" Margin="12,161,0,0" Name="button_snarlChsarp" Width="173" Height="23" VerticalAlignment="Top" >Snarl Connector</Button>
        <Button Margin="191,161,0,0" Name="button_TweetSharp" Height="23" VerticalAlignment="Top" HorizontalAlignment="Left" Width="173" >TweetSharp</Button>
        <Button Height="23" HorizontalAlignment="Left" Margin="12,190,0,0" Name="button_iconSet" VerticalAlignment="Top" Width="173" >Function Icon Set</Button>
        <Button Height="23" Margin="191,190,0,0" Name="button_facebook" VerticalAlignment="Top" HorizontalAlignment="Left" Width="173" >Facebook Developer Toolkit</Button>
        <Button Height="23" HorizontalAlignment="Left" Margin="12,219,0,0" Name="button_awesomium" VerticalAlignment="Top" Width="173" >Web Kit .NET</Button>
        <Button Height="23" Margin="191,219,0,0" Name="button_winkle" VerticalAlignment="Top" HorizontalAlignment="Left" Width="173" >Winkle Update System</Button>
        <TextBlock Height="59" Margin="12,248,12,0" Name="textBlock_contributors" VerticalAlignment="Top" Text="Contributors: We want to thank all the people using Desktop Google Reader. A special thanks goes to Henry C. for his continues help in improving and supporting our project." TextAlignment="Left" TextWrapping="Wrap" />
    </Grid>
    </Viewbox>
</Window>

回答by paparazzo

Need to modify the Stretch.

需要修改Stretch。

Uniform will keep the text proportional.
You are probably looking for Fill.

统一将保持文本成比例。
您可能正在寻找填充。

Stretch Enumeration

拉伸枚举

Don't set the height and widths of a control it is not going to resize.
And put the Viewbox in the Grid (not Grid in the Viewbox).

不要设置不会调整大小的控件的高度和宽度。
并将 Viewbox 放在 Grid 中(而不是 Viewbox 中的 Grid)。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Viewbox Grid.Row="0" Grid.Column="0" Stretch="Fill">
        <TextBox Text="size me" TextChanged="TextBox_TextChanged" />
    </Viewbox>
    <Viewbox Grid.Row="1" Grid.Column="0" Stretch="Fill">
        <TextBox Text="size me to0 " TextChanged="TextBox_TextChanged" />
    </Viewbox>
</Grid>