Estilo do botão WPF C #

Alguém saberia como recriar esse estilo de botão no WPF? Como não sei como fazer os diferentes compartimentos. Assim como os 2 textos e estilos de texto diferentes?

insira a descrição da imagem aqui

Para resolver sua dúvida, definitivamente, precisa usar o Style e o Template do Button . Mas como exatamente ele se parece? Decisões podem ser várias. Por exemplo, Button são dois textos para melhor definir os TextBlocks relevantes? Pode ser diretamente no modelo, mas, em seguida, use os botões será limitado, porque o modelo pode ser apenas um ContentPresenter . Decidi fazer as coisas de maneira diferente, para identificar um ContentPresenter com um ícone na forma de um Path , e o conteúdo é definido usando os botões ao lado.

O estilo:

  

Amostra de uso:

         

Output

insira a descrição da imagem aqui

É melhor StackPanel determinar os Resources e definir o Button para:

        

A questão permanece com a configuração do valor para TextBlock Duration , porque esse valor deve ser dynamic . Eu o implementei usando o DependencyProperty anexado. Coloque na janela, assim:

  

Usando no TextBlock :

  

Na verdade, não há diferença para alguém determinar o DependencyProperty anexado, porque é o recurso predominante.

Exemplo de valor definido:

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

Uma lista completa de exemplos:

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); } } 

Aqui está minha tentativa. Parece mais semelhante ao exemplo do OP e fornece propriedades definíveis para icon ( FrameworkElement ), title ( string ) e subtitle ( string ). A saída é assim:

insira a descrição da imagem aqui

Aqui está o XAML:

  

Aqui está o code-behind:

 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)); } } 

Aqui está como usá-lo:

                
       

Neste dia e idade dos computadores e tablets com canvass sensíveis ao toque, etc, muitas vezes é esquecido para atender a input via teclado apenas. Um botão deve suportar um retângulo de foco (o retângulo pontilhado quando o botão tiver foco) ou outra forma que corresponda à forma do botão.

Para adicionar um retângulo de foco ao botão, use este XAML ( deste site ). Estilo de retângulo de foco:

  

Aplicando o estilo ao botão:

  

Eu sei que esta é uma resposta bastante tardia, mas esta questão abre um portal de descobertas para os grandes resources e potenciais do WPF, passei alguns dias codificando esse controle, e este é o resultado (minha versão):

insira a descrição da imagem aqui

Eu não vou falar muito sobre como ele é criado como controles personalizados no WPF tem apenas uma maneira de fazê-lo e é mencionado nas respostas, mas eu enviei o projeto para o GitHub, você pode navegar aqui: https://github.com/mshwf / WPF-Samples / tree / master / Amostra% 20Applications / CustomComboBox

Espero que a Microsoft aceite isso em seu repository WPF-Samples, pois notei que falta amostras na criação de controles personalizados!

Intereting Posts