C# WPF ProgressBar的“默认”高度

5
在WPF中,当我在XAML文件中放置一个ProgressBar时,默认情况下它的高度大约为2或3个像素。
要与其他Windows应用程序保持一致(并根据dpi分辨率等调整高度),我应该设置什么高度?我尝试设置Height="auto",但结果是相同的。
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel Name="dockPanel1">
        <ProgressBar Name="progressBar1" Value="33" DockPanel.Dock="Top"/>
        <TreeView Name="treeView1" />
    </DockPanel>
</Window>
2个回答

9

“有趣”的是,尺寸以DLUs和像素为单位(我猜像素是使用Windows的默认参数从DLUs转换而来的?),但不是以DVIs为单位(XAML使用的单位)。哦,好吧。 - Suzanne Soy

0

我相信其他控件的典型高度是23。

所以,对于你的进度条,请使用以下代码:

<ProgressBar Name="progressBar1" Height="23" Value="33" DockPanel.Dock="Top"/>

根据进度条所在的上下文和您想要使其多么可见,您可能希望上下更改高度。我看过许多应用程序都有一个非常高的进度条,以确保用户能够看到它。这只取决于您想要的外观。


其他控件的典型高度为23,使用默认字体和DPI。只是说一下... @GeorgesDuperon:如果您想要锚定到类似标签或文本块的东西,并且它继承其文本样式自操作系统,则可能希望让它决定高度。这完全取决于实际需求。 - Alex Paven
2
我很确定WPF的值不是以像素为单位的,而是一个作为基础的数字,WPF会考虑DPI设置并根据DPI设置比例调整您设置的高度。 - Curtis
公正的观点,我忘记了在 Web 领域中使用设备无关单位。不过,我仍然会使用其他东西作为锚点,而不是硬编码该值。 - Alex Paven
请参考Curtis的这个帖子,了解有关WPF分辨率独立性的讨论。基本上,它可以正确地进行调整,但并不像你可能想象的那样。 - nmclean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接