【问题标题】:Viewbox containing a TextBlock seems to have minimum height包含 TextBlock 的 Viewbox 似乎具有最小高度
【发布时间】:2011-08-24 02:04:34
【问题描述】:

我正在尝试在 WPF 中构建一个可以随窗口大小缩放的 UI 布局。这个想法是在左边有一些控件,在右边有一些控件,在中间有一行文本。如果右边的文本行被裁剪就可以了。主要是所有控件的纵横比都保持不变。

那部分工作正常。问题是文本的中心线似乎有一个最小高度;低于这个高度,它将开始垂直剪裁。如果我把窗口做得很薄,我希望文本继续缩小。即使在TextBlock 上手动设置FontSize 也不起作用。

注意左右控件没有最小宽度;它们可以无限缩小。

我的 XAML 在这里。我正在使用 .NET 4.0。

<Window x:Class="TestWpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="75" Width="525">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Viewbox Grid.Column="0" Stretch="UniformToFill" Margin="2">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Button Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">A</Button>
                <Button Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">B</Button>
                <Button Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">C</Button>
                <Button Grid.Column="3" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">D</Button>
            </Grid>
        </Viewbox>

        <Viewbox VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Column="1" Stretch="UniformToFill" Margin="2">
            <TextBlock>Here is a bunch of text that may prove to be interesting.</TextBlock>
        </Viewbox>

        <Viewbox Grid.Column="2" Stretch="UniformToFill" Margin="2">
            <Button HorizontalAlignment="Center">X</Button>
        </Viewbox>
    </Grid>
</Window>

【问题讨论】:

    标签: wpf textblock viewbox


    【解决方案1】:

    问题是你喜欢Viewbox 水平发生的剪辑,但不希望有任何垂直剪辑。换句话说,您需要UniformToFill,直到水平剪辑停止,然后您想切换到Uniform

    要获得这两种行为,您需要替代Viewbox。不久前,我在这个 Stack Overflow 答案中写了一个这样的布局元素的原型,名为 ViewboxPanel

    我刚刚对其进行了测试,至少对于您的示例 XAML,我认为它可以满足您的需求:

    <local:ViewboxPanel VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Column="1" Margin="2">
        <TextBlock>Here is a bunch of text that may prove to be interesting.</TextBlock>
    </local:ViewboxPanel>
    

    【讨论】:

      猜你喜欢
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2022-07-26
      • 2013-02-03
      • 2016-01-16
      • 1970-01-01
      相关资源
      最近更新 更多