2015-12-30 83 views
1

我有以下XAML代碼顯示了一組在我的窗口控件:WPF進度不會左對齊正確

<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> 

它基本上是一個圖片的左側和兩個的TextBlocks和進度向右。

我的問題是,當我的窗口變寬時,ProgressBar在最後會無限延伸。 我希望我的進度條在某個點停止增長。因此,如果用戶拉伸窗口,它將停止在給定的MaxWidth。 所以我想這:

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

但如果它被拉伸比左邊和進度的圖像之間MaxWidth生成空間更多,這將居中進度窗口的中間。 我希望進度堅持到左側,但HorizontalAlignment="Left"的進度減少到幾個像素:

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

有沒有人有一個想法如何使這項工作?

回答

1

你也可以換你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> 
1

您可以嘗試結合其他元素的寬度:

<TextBlock x:Name="title" Grid.Column="1" Grid.Row="0" Margin="5" FontWeight="Bold" Text="{Binding Titel}" Foreground="#B0B0B0" VerticalAlignment="Top" /> 

<ProgressBar Grid.Column="1" Grid.Row="2" Value="50" Margin="5" Height="15" Width="{Binding Path=ActualWidth, ElementName=title}" MaxWidth="200" HorizontalAlignment="Left"/>