首页 > 解决方案 > 如何在保持字体大小的同时使用视图框调整 WPF 中按钮内容的大小?

问题描述

我正在创建一个应用程序,当用户最小化他们的屏幕时,我需要一个按钮的内容可以调整大小。我们知道视图框在 WPF 中是这样做的;这是自动调整文本大小的最简单方法。

这是按钮 [顶部] 的代码,我对格式表示歉意:

 <Button Grid.Row="0"
Grid.Column="2"
                                Background="#3767B0"
                                Style="{DynamicResource IconStyle}"
                                BorderBrush="Transparent">
                                       <Button.ContentTemplate>
                                        <DataTemplate >
                                        <Viewbox>
                                            <TextBlock>&#xE90A;</TextBlock>
                                            </Viewbox>
                                        </DataTemplate>
                                    </Button.ContentTemplate>

                         
                                </Button>

我想从中得到的是:使用 WPF 中的 Viewbox 来调整此按钮的内容大小,同时保持内容的字体大小。

这会调整按钮内容的大小,但不会保留按钮的内容:

在此处输入图像描述

这是视图框的外观,并且应该正确调整大小:

在此处输入图像描述

通过维护,我的意思是我想使用视图框,而按钮的内容(它是视图框的子项)看起来与字体大小为 22 的完全相同。你可以看到我希望它看起来如何上图中按钮内容内的视图框。我试图尽可能清楚地说明这一点。也许我不明白视图框是如何工作的?

有人要求图标样式。这是图标样式代码:

  <Style TargetType="Button"
               x:Key="IconStyle"
               BasedOn="{StaticResource ButtonStyle1}">
            <Setter Property="FontFamily"
                    Value="Segoe MDL2 Assets" />

            <Setter Property="Grid.RowSpan"
                    Value="2" />

            <Setter Property="Padding"
                    Value="0,0,0,60" />

            <Setter Property="Foreground"
                    Value="White" />

            <Setter Property="FontSize"
                    Value="80" />

            <Setter Property="Background"
                    Value="#307A85" />

            <Setter Property="BorderBrush"
                    Value="Transparent" />

            <Setter Property="BorderThickness"
                    Value="0" />


            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect BlurRadius="15"
                                      ShadowDepth="0"
                                      Opacity="0.4"
                                      Color="Black" />
                </Setter.Value>
            </Setter>

标签: wpfxaml

解决方案


如果我正确理解您需要实现的内容,请删除 ViewBox 并设置 TextBlock 的显式尺寸。我正在展示一个任意示例,但对于您的任务,您自己选择所需的尺寸和对齐方式。

    <Button Background="#3767B0"
            Style="{DynamicResource IconStyle}"
            BorderBrush="Transparent">
        <Button.ContentTemplate>
            <DataTemplate >
                <TextBlock Width="300"
                           Height="300"
                           FontSize="200"
                           Text="&#xE90A;"/>
            </DataTemplate>
        </Button.ContentTemplate>
    </Button>

推荐阅读