StatusBar 中的 WPF ProgressBar 不会拉伸
Posted
技术标签:
【中文标题】StatusBar 中的 WPF ProgressBar 不会拉伸【英文标题】:WPF ProgressBar in StatusBar won't stretch 【发布时间】:2013-04-16 21:40:57 【问题描述】:WPF 新手,我有以下 XAML
<Window x:Class="Wpf.RossKiosk.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Topmost="True" WindowStartupLocation="CenterScreen" WindowState="Maximized" ResizeMode="NoResize" WindowStyle="None">
<DockPanel LastChildFill="True">
<StatusBar Name="StatusBarMain" Height="30" DockPanel.Dock="Bottom">
<StatusBarItem HorizontalContentAlignment="Left">
<TextBlock x:Name="TextBlockStatus" Margin="5,0,0,0" />
</StatusBarItem>
<StatusBarItem HorizontalContentAlignment="Stretch">
<ProgressBar x:Name="ProgressBarMain" IsIndeterminate="True" Height="15" />
</StatusBarItem>
<StatusBarItem HorizontalContentAlignment="Right">
<TextBlock x:Name="TextBlockInfo" Margin="5,0,0,0" TextAlignment="Right" />
</StatusBarItem>
</StatusBar>
<Grid Name="GridMain">
<!-- Dynamically Created buttons -->
</Grid>
</DockPanel>
我希望 ProgressBar 填充 StatusBar 的中心部分,但它只显示几个像素的宽度。有什么想法吗?
【问题讨论】:
尝试将所有状态栏项包装到一个网格中,看看它是否有效。 这对我有帮助,但我需要添加网格行和列定义以使其正常工作。
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch"高度=“自动”工具提示=“abc213”> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="<i>"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="</i>"></ColumnDefinition>
我无法格式化我的答案。请无视
答案在这里:***.com/questions/2068601/…
【参考方案1】:
这是由于StatusBar
默认使用DockPanel
来布置其子级。请看我的问答here。
【讨论】:
【参考方案2】:您将需要使用网格。 DockPanel 或 StackPanel 不足以满足您的需求。 试试:
<Grid>
<StatusBar Name="StatusBarMain" Height="30" HorizontalAlignment="Stretch">
<StatusBarItem HorizontalContentAlignment="Left">
<TextBlock x:Name="TextBlockStatus" Margin="5,0,0,0" />
</StatusBarItem>
<StatusBarItem HorizontalContentAlignment="Stretch">
<ProgressBar x:Name="ProgressBarMain" IsIndeterminate="True" Height="15" />
</StatusBarItem>
<StatusBarItem HorizontalContentAlignment="Right">
<TextBlock x:Name="TextBlockInfo" Margin="5,0,0,0" TextAlignment="Right" />
</StatusBarItem>
</StatusBar>
</Grid>
【讨论】:
投反对票原因:网格应该被包裹在这对我有帮助,但我需要添加网格行和列定义以使其正常工作。
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="Auto" ToolTip="abc213">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
【讨论】:
【参考方案4】:这会将进度条延伸到其容器
<StatusBarItem Name="progressBarContainer">
<ProgressBar Height="Binding ElementName=progressBarContainer, Path=ActualHeight" Width="Binding ElementName=progressBarContainer, Path=ActualWidth" Value="50" />
</StatusBarItem>
【讨论】:
以上是关于StatusBar 中的 WPF ProgressBar 不会拉伸的主要内容,如果未能解决你的问题,请参考以下文章
2021-08-24 WPF控件专题 StatusBar 控件详解