2015-09-10 77 views
0

我有一个简单的StackPanel,它包含一个TextBlockProgressBar当IsIndeterminate = true时,WPF ProgressBar不会缩小以适合内容

在启动时,ProgressBar的宽度是完美的 - 它的大小已经适合其边界(由兄弟TextBlock延伸至150)。

但是,当TextBlock由于附加文本(其中ProgressBar很好地扩展以填充额外区域)而被拉伸到超过150的宽度,并且由于其文本的去除而被收缩时,宽度进度条仍然存在。

这只是发生在IsIndeterminate = true

enter image description here

下匆忙拼凑的代码会显示运作;

<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(); 
} 

回答

2

您可以在进度条的Width绑定到TextBlockActualWidth

<TextBlock MinWidth="150" Name="tb" HorizontalAlignment="Left" /> 
<ProgressBar MinHeight="20" IsIndeterminate="True" 
    Width="{Binding Path=ActualWidth, ElementName=tb, Mode=OneWay}"/> 
相关问题