2013-05-07 103 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> 
相关问题