C# 由于WPF应用程序中的显示属性而处理不同的字体大小?

C# 由于WPF应用程序中的显示属性而处理不同的字体大小?,c#,wpf,fonts,C#,Wpf,Fonts,我的小组正在WPF中构建一个编辑器类型的应用程序。我们注意到的一点是,在我的WinXP机器上,运行的是“windows经典风格”主题,按钮上的文本非常适合。然而,在我朋友的机器上,他运行的是“WindowsXP风格”主题,字体更大,所以按钮上的文本被夹在底部 有没有办法很好地处理这个问题,比如自动调整控件大小以适应文本 我不太愿意手动调整按钮的大小以适应他的布局,因为其他任何人都可以通过“显示属性”和“可访问性”选项进行完全不同的设置 谢谢 是否使用宽度和高度属性对元素大小进行了硬编码?在WPF

我的小组正在WPF中构建一个编辑器类型的应用程序。我们注意到的一点是,在我的WinXP机器上,运行的是“windows经典风格”主题,按钮上的文本非常适合。然而,在我朋友的机器上,他运行的是“WindowsXP风格”主题,字体更大,所以按钮上的文本被夹在底部

有没有办法很好地处理这个问题,比如自动调整控件大小以适应文本

我不太愿意手动调整按钮的大小以适应他的布局,因为其他任何人都可以通过“显示属性”和“可访问性”选项进行完全不同的设置


谢谢

是否使用宽度和高度属性对元素大小进行了硬编码?在WPF中,推荐的方法是使用几个布局容器

下面是一个网格示例,它在底部放置两个按钮,在顶部放置一个文本框

<Grid>
    <Grid.RowDefinitions>
        <!-- TextBox row with unspecified height. -->
        <RowDefinition Height="*"/>

        <!-- Button row with automated height so it resizes to
             fit the content -->
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <!-- Textbox on first row. -->
    <TextBox Margin="3" Name="textBox1" Grid.Row="0" AcceptsReturn="True" />

    <!-- StackPanel which lays the two buttons at the bottom horizontally.
         RightToLeft is specified so that the first button appears on right.
         -->
    <StackPanel Grid.Row="1" HorizontalAlignment="Right"
                Orientation="Horizontal" FlowDirection="RightToLeft">

        <!-- The buttons. Only padding and margin are hardcoded so these
             can resize to the contents -->
        <Button Padding="3" Margin="3">OK</Button>
        <Button Padding="3" Margin="3">Cancel</Button>
    </StackPanel>
</Grid>

好啊
取消
WPF按钮将自动调整大小,以适应给定的内容,但仅当它位于不强制大小且未手动设置大小的容器内时,才会执行此操作。要在以下代码段中证明字体大小的混乱:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button
        Grid.Column="1"
        Grid.Row="1"
        FontSize="24"
        Content="QWERTY"/>
</Grid> 


我猜您的按钮没有调整大小,因为您已对其进行了约束。要解决这一问题,您需要决定如何调整它们的大小(如果元素盲目增长,那么当元素重叠时,这可能会非常复杂),如果提供的面板类型中没有一种执行您正在寻找的增长行为,那么您可能需要编写自己的操作。

我没有硬编码按钮的高度,但我的网格布局有问题。可能是类似的原因导致了这个问题。是的,看起来是这样的。谢谢你,马丁!