C# 由于WPF应用程序中的显示属性而处理不同的字体大小?
我的小组正在WPF中构建一个编辑器类型的应用程序。我们注意到的一点是,在我的WinXP机器上,运行的是“windows经典风格”主题,按钮上的文本非常适合。然而,在我朋友的机器上,他运行的是“WindowsXP风格”主题,字体更大,所以按钮上的文本被夹在底部 有没有办法很好地处理这个问题,比如自动调整控件大小以适应文本 我不太愿意手动调整按钮的大小以适应他的布局,因为其他任何人都可以通过“显示属性”和“可访问性”选项进行完全不同的设置C# 由于WPF应用程序中的显示属性而处理不同的字体大小?,c#,wpf,fonts,C#,Wpf,Fonts,我的小组正在WPF中构建一个编辑器类型的应用程序。我们注意到的一点是,在我的WinXP机器上,运行的是“windows经典风格”主题,按钮上的文本非常适合。然而,在我朋友的机器上,他运行的是“WindowsXP风格”主题,字体更大,所以按钮上的文本被夹在底部 有没有办法很好地处理这个问题,比如自动调整控件大小以适应文本 我不太愿意手动调整按钮的大小以适应他的布局,因为其他任何人都可以通过“显示属性”和“可访问性”选项进行完全不同的设置 谢谢 是否使用宽度和高度属性对元素大小进行了硬编码?在WPF
谢谢 是否使用宽度和高度属性对元素大小进行了硬编码?在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>
我猜您的按钮没有调整大小,因为您已对其进行了约束。要解决这一问题,您需要决定如何调整它们的大小(如果元素盲目增长,那么当元素重叠时,这可能会非常复杂),如果提供的面板类型中没有一种执行您正在寻找的增长行为,那么您可能需要编写自己的操作。我没有硬编码按钮的高度,但我的网格布局有问题。可能是类似的原因导致了这个问题。是的,看起来是这样的。谢谢你,马丁!