2015-12-30 3 views
1

я иметь следующий XAML код для отображения набора элементов управления в моем окне:WPF Progressbar не будет выравнивание по левому краю правильно

<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 справа ,

Моя проблема в том, что ProgressBar в конце будет растягиваться бесконечно широко, когда мое окно становится шире. Я хочу, чтобы мой прогрессбар переставал расти в определенный момент. Поэтому, если пользователь растягивает окно, он останавливается при заданном MaxWidth. Так я попытался это:

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

Но это будет центрировать ProgressBar в середине окна, если он растягивается более MaxWidth генерирующее пространства между изображениями на левом и ProgressBar. Я хочу Progressbar придерживаться слева, но HorizontalAlignment="Left" минимизирует ProgressBar до нескольких пикселей:

<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"/> 
Смежные вопросы