.net - WPF 进度条无法正确左对齐

标签 .net wpf xaml alignment progress-bar

我有以下 XAML 代码来在我的窗口中显示一组控件:

<Grid Height="80">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Image Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" Width="80" />

    <TextBlock Grid.Column="1" Grid.Row="0" Margin="5" FontWeight="Bold" Text="{Binding Titel}"
               Foreground="#B0B0B0" VerticalAlignment="Top" />
    <TextBlock Grid.Column="1" Grid.Row="1" Margin="5,0" Text="{Binding Description}" Foreground="#c9c9c9"
               VerticalAlignment="Top" />
    <ProgressBar Grid.Column="1" Grid.Row="2" Value="50" Margin="5" Height="15" MaxWidth="200" />

</Grid>

它基本上是左侧的一个图像和右侧的两个 TextBlock 和一个 ProgressBar。

我的问题是,当我的窗口变宽时,最后的进度条将无限延伸。 我希望我的进度条在某个点停止增长。因此,如果用户拉伸(stretch)窗口,它将停止在给定的最大宽度处。 所以我尝试了这个:

<ProgressBar Grid.Row="2" Value="50" Margin="5" Height="15" MaxWidth="200"/>

但是,如果进度条拉伸(stretch)超过 MaxWidth,则会在窗口中间居中,从而在左侧的图像和进度条之间生成空间。 我希望进度条保持在左侧,但 Horizo​​ntalAlignment="Left" 将进度条最小化到几个像素:

<ProgressBar Grid.Row="2" Value="50" Margin="5" Height="15" MaxWidth="200" HorizontalAlignment="Left"/>

有人知道如何实现这项工作吗?

最佳答案

您还可以将 ProgressBar 包装在 Grid 中,并定义两列,如下所示:

<Grid Grid.Column="1" Grid.Row="2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" MaxWidth="200"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <ProgressBar Grid.Column="0" Value="50" Margin="5" Height="15"/>
</Grid>

关于.net - WPF 进度条无法正确左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527399/

相关文章:

c# - 检测悬停在 ViewModel 中的 ListBoxItem 上

c# - 将 View 模型绑定(bind)到 View

c# - .NET 2.0/C# 中泛型方法元数据的签名格式是什么?

.net - 如何解决远程数据库上的 Firebird "unavailable database"错误?

c# - WPF 如何从 DataTemplate 访问控件

wpf - 如何将网格的子项绑定(bind)到列表?

c# - 功能区更改标题文本颜色

c# - 将 foreach 转换为 linq 表达式

c# - 如何获取当前正在运行的应用程序列表?

c# - 客户端应用更新