WPF ProgressBar не сжимается под размер содержимого, когда IsIndeterminate = true

У меня есть простой StackPanel который содержит TextBlock а также ProgressBar,

При запуске ширина ProgressBar идеален - он имеет размеры, соответствующие его границам (растянутый до 150 TextBlock).

Тем не менее, когда TextBlock растянулся на ширину более 150 из-за дополнительного текста (который ProgressBar приятно расширяется, чтобы заполнить дополнительную область), а затем сжимается, из-за удаления его текста ширина индикатора выполнения остается.

Это происходит только тогда, когда IsIndeterminate = true

введите описание изображения здесь

Следующий наскоро составленный код покажет работу;

<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <StackPanel>
        <TextBlock MinWidth="150" Name="tb"  HorizontalAlignment="Left"></TextBlock>
       <ProgressBar MinHeight="20" IsIndeterminate="True"/>
    </StackPanel>
</Grid>


public MainWindow()
{
    InitializeComponent();
    new Thread(() =>
    {
        Thread.Sleep(2000);
        App.Current.Dispatcher.Invoke(() =>
        {
            tb.Text = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
        });
        Thread.Sleep(1000);
        App.Current.Dispatcher.Invoke(() =>
        {
            tb.Text = "A";
        });
    }).Start();
}

1 ответ

Решение

Вы могли бы связать Width Прогрессбар к ActualWidth из TextBlock,

<TextBlock MinWidth="150" Name="tb"  HorizontalAlignment="Left" />
<ProgressBar MinHeight="20" IsIndeterminate="True" 
    Width="{Binding Path=ActualWidth, ElementName=tb, Mode=OneWay}"/>
Другие вопросы по тегам