2013-05-07 115 views
1

我是WPF的新手,並沒有放棄將進度條放入按鈕的嘗試。我之前提出的問題是:StackOverflow Post。任何幫助如何正確地做到這一點,將不勝感激。我沒有在StackOverflow上看到另一篇文章來解決這個問題。理想情況下,將按鈕(1)與文本垂直居中(即通常顯示在按鈕中)以及(2)文本下方的進度條會很棒。按鈕將是默認高度的2倍,以便爲進度條留出空間。我可以調整你想出的任何東西的位置和間距。我對正確完成綁定以更新進度欄非常感興趣。如何將ProgressBar放入按鈕中

謝謝! 降壓

+0

覆蓋它的模板屬性。 – 2013-05-07 16:49:34

回答

5

您有兩種選擇,可以爲您的按鈕創建UserControl或新樣式並覆蓋ControlTemplate。我會建議你的風格Button,因爲它更容易,你不會創建一個新的類型。以下是你如何做到這一點。

<Button> 
    <Button.Style> 
     <Style BasedOn="{StaticResource {x:Type Button}}" TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <!-- Put in your textbox and progress bar and what not --> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Button.Style> 
</Button> 

你可以閱讀更多關於模板化控件here並可以找到Buttonhere默認StyleControlTemplate

+0

太棒了,謝謝你! – Buck 2013-05-07 17:40:41

+0

很高興我能幫忙! – 2013-05-07 17:41:16

0

如果你只需要這一個實例,你可以做這樣的事情:

<Button Click="Button_Click_1"> 
     <StackPanel> 
      <TextBlock Text="Hello World"/> 
      <ProgressBar Height="10" x:Name="pb1" Maximum="15"></ProgressBar> 
     </StackPanel> 
</Button> 

然後在你的C#代碼,你可以訪問進度條,如:

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    pb1.Value++; 
} 
4

你可以很容易地把任何控制按鈕的Content屬性:

<Button> 
    <Button.Content> 
     <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="5"> 
      <TextBlock Text="I'm a button with progress bar!"></TextBlock> 
      <ProgressBar Height="20"></ProgressBar> 
     </StackPanel> 
    </Button.Content> 
</Button> 

這將導致這樣的一個按鈕控件:

enter image description here

如果你需要一個以上的,應聲明Style並應用到表單中的按鈕,正如其他建議。

0

使用麻將應用

<Button Canvas.Left="170" 
           Canvas.Top="71" 
           Width="55" 
           Command="{Binding SearchEmployeeCommand}"> 
          <Canvas Width="50" Height="20"> 
           <TextBlock Text="select ..." /> 
           <controls:ProgressRing Canvas.Left="15" 
                 Width="20" 
                 Height="20" 
                 IsActive="True" 
                 Visibility="Visible" /> 
          </Canvas> 
         </Button>