Estilo del botón WPF C #

¿Alguien sabría cómo recrear este estilo de botón en WPF? Como no sé cómo hacer los diferentes compartimentos. ¿Además de los 2 textos y estilos de texto diferentes?

enter image description here

Para resolver su pregunta, definitivamente necesita usar el Style y la Template para el Button . ¿Pero cómo se ve exactamente? Las decisiones pueden ser varias. Por ejemplo, Button son dos textos para definir mejor los TextBlocks relevantes. Puede estar directamente en la plantilla, pero luego usar los botones será limitado, porque la plantilla puede ser solo un ContentPresenter . Decidí hacer las cosas de manera diferente, identificar un ContentPresenter con un ícono en forma de Path y el contenido se configura con los botones laterales.

El estilo:

  

Muestra de usar:

         

Output

enter image description here

Lo mejor es que StackPanel determine los Resources y configure el Button modo que:

        

La pregunta sigue siendo establecer el valor para la TextBlock Duration de TextBlock Duration , porque este valor debe ser dynamic . Lo implementé usando DependencyProperty adjunto. Ponlo en la ventana, así:

  

Utilizando en TextBlock :

  

De hecho, no hay diferencia para que alguien determine la Propiedad de DependencyProperty adjunta, porque es la característica predominante.

Ejemplo de valor establecido:

 private void Button_Click(object sender, RoutedEventArgs e) { MyDependencyClass.SetCurrentDuration(MyWindow, "Duration: 101m"); } 

Una lista completa de ejemplos:

XAML

             

Code behind

 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { MyDependencyClass.SetCurrentDuration(MyWindow, "Duration: 101m"); } } public class MyDependencyClass : DependencyObject { public static readonly DependencyProperty CurrentDurationProperty; public static void SetCurrentDuration(DependencyObject DepObject, string value) { DepObject.SetValue(CurrentDurationProperty, value); } public static string GetCurrentDuration(DependencyObject DepObject) { return (string)DepObject.GetValue(CurrentDurationProperty); } static MyDependencyClass() { PropertyMetadata MyPropertyMetadata = new PropertyMetadata("Duration: 0m"); CurrentDurationProperty = DependencyProperty.RegisterAttached("CurrentDuration", typeof(string), typeof(MyDependencyClass), MyPropertyMetadata); } } 

Aquí está mi bash. Se parece más a la muestra de OP y proporciona propiedades ajustables para el icono ( FrameworkElement ), title ( string ) y subtítulo ( string ). La salida se ve así:

enter image description here

Aquí está XAML:

  

Aquí está el código detrás:

 using System.Windows; using System.Windows.Controls; namespace Controls { public partial class FancyButton : Button { public FancyButton() { InitializeComponent(); } public string Title { get { return (string)GetValue(TitleProperty); } set { SetValue(TitleProperty, value); } } public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(FancyButton), new FrameworkPropertyMetadata("Title", FrameworkPropertyMetadataOptions.AffectsRender)); public string SubTitle { get { return (string)GetValue(SubTitleProperty); } set { SetValue(SubTitleProperty, value); } } public static readonly DependencyProperty SubTitleProperty = DependencyProperty.Register("SubTitle", typeof(string), typeof(FancyButton), new FrameworkPropertyMetadata("SubTitle", FrameworkPropertyMetadataOptions.AffectsRender)); public FrameworkElement Image { get { return (FrameworkElement)GetValue(ImageProperty); } set { SetValue(ImageProperty, value); } } public static readonly DependencyProperty ImageProperty = DependencyProperty.Register("Image", typeof(FrameworkElement), typeof(FancyButton), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender)); } } 

Aquí es cómo usarlo:

                
       

Hoy en día, las computadoras y las tabletas con pantalla táctil, etc., que se manejan con el mouse, a menudo olvidan la entrada solo a través del teclado. Un botón debe admitir un rectángulo de enfoque (el rectángulo punteado cuando el botón tiene foco) u otra forma que coincida con la forma del botón.

Para agregar un rectángulo de enfoque al botón, use este XAML (desde este sitio ). Estilo de rectángulo de enfoque:

  

Aplicando el estilo al botón:

  

Sé que esta es una respuesta bastante tardía, pero esta pregunta abre una puerta de descubrimientos a las grandes características y potenciales de WPF. Pasé algunos días codificando este control, y este es el resultado (mi versión):

enter image description here

No hablaré mucho sobre cómo se creó, ya que los controles personalizados en WPF solo tienen una forma de hacerlo y se mencionan en las respuestas, pero subí el proyecto a GitHub, puedes buscarlo aquí: https://github.com/mshwf / WPF-Samples / tree / master / Sample% 20Applications / CustomComboBox

esperemos que Microsoft lo acepte en su repository WPF-Samples, ¡ya que noté que le faltan ejemplos para crear controles personalizados!