Dot-Net

WPF 中 ProgressBar 上的文本

  • September 16, 2008

對於 WPF 行家來說,這可能是顯而易見的,但我想知道是否有一種簡單的方法可以將文本放在 WPF ProgressBar 上。對我來說,一個空的進度條看起來很赤裸。那是螢幕空間,可以傳遞有關正在進行的資訊,甚至只是在表示中添加數字**。**現在,WPF 都是關於容器和擴展的,我正在慢慢地圍繞著它思考,但由於我沒有看到“文本”或“內容”屬性,我想我將不得不添加一些東西到作為我的進度條的容器。是否有一種或兩種技術比我最初的 WinForms 衝動更自然?向進度條添加文本的最佳、最自然的 WPF 方式是什麼?

如果您需要一種可重用的方法來添加文本,您可以創建一個新的 Style/ControlTemplate,它有一個額外的 TextBlock 來顯示文本。您可以劫持 TextSearch.Text 附加屬性來設置進度條上的文本。

如果它不需要可重用,只需將進度條放在一個 Grid 中,然後在網格中添加一個 TextBlock。由於 WPF 可以將元素組合在一起,這將很好地工作。

如果需要,您可以創建一個將 ProgressBar 和 TextBlock 公開為公共屬性的 UserControl,因此它比創建自定義 ControlTemplate 工作量少。

之前的兩個響應(創建一個新的CustomControl或一個Adorner)都是更好的做法,但如果你只是想要快速和骯髒的(或從視覺上理解如何做到這一點),那麼這段程式碼可以工作:

<Grid Width="300" Height="50">  
  <ProgressBar Value="50" />
  <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
     My Text
  </TextBlock>
</Grid>

請記住,z-index 使得列出的最後一項位於頂部。

此外,如果您還沒有Kaxaml,請務必選擇它 - 當您嘗試解決問題時,它非常適合使用 XAML。

引用自:https://stackoverflow.com/questions/75924