2013-05-07 2 views
1

Я новичок в WPF и не снял свою попытку поставить индикатор прогресса на кнопку. Мой предыдущий вопрос задан по адресу: StackOverflow Post. Любая помощь в том, как правильно это сделать, будет оценена по достоинству. Я не видел другого сообщения в StackOverflow, чтобы решить эту проблему. В идеале было бы здорово иметь кнопку (1) с вертикальным текстом (т. Е. Как обычно появляется на кнопке) и (2) с индикатором выполнения ниже текста. Кнопка будет иметь 2 раза высоту по умолчанию, чтобы обеспечить пространство для панели прогресса. Я могу настроить положение и расстояние всего, что вы придумали. Я очень заинтересован в правильном выполнении привязок для обновления панели прогресса.Как установить ProgressBar в Button

Спасибо! Buck

+0

переопределение его свойства шаблона. –

ответ

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 и можете найти по умолчанию Style и ControlTemplateButton для here.

+0

Фантастический и спасибо !!! – Buck

+0

рад, что я мог бы помочь! –

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

Используйте Mah приложение

<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> 
Смежные вопросы