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}"/>