Eu tenho um grupo de botões que devem funcionar como botões de alternância, mas também como botões de opção, onde apenas um botão pode ser selecionado / pressionado no momento. Ele também precisa ter um estado em que nenhum dos botões seja selecionado / pressionado.
O comportamento será como a barra de ferramentas do Photoshop, onde zero ou uma das ferramentas é selecionada a qualquer momento!
Alguma idéia de como isso pode ser implementado no WPF?
Esta é a maneira mais fácil na minha opinião.
Aproveitar! - Pricksaw
fonte
Grid
), use<Grid.Resources> <Style TargetType="RadioButton" BasedOn="{StaticResource {x:Type ToggleButton}}" /> </Grid.Resources>
.<Style BasedOn="{StaticResource {x:Type ToggleButton}}" x:Key="Blubb" TargetType="RadioButton"><Setter Property="Background" Value="Yellow" /></Style>
funciona para mim, divirta-se!
fonte
você sempre pode usar um evento genérico no Click do ToggleButton que define todos os ToggleButton.IsChecked em um controle de grupo (Grid, WrapPanel, ...) como false com a ajuda do VisualTreeHelper; depois verifique novamente o remetente. Ou algo assim.
fonte
você pode colocar uma grade com botões de opção e criar botões como modelos para botões de opção. do que apenas remover programaticamente, verifique se você não deseja que os botões sejam alternados
fonte
Você também pode tentar
System.Windows.Controls.Primitives.ToggleButton
Em seguida, escreva um código na
IsChecked
propriedade para imitar o efeito do botão de opçãofonte
ListBoxItem
s.Eu fiz isso para RibbonToggleButtons, mas talvez seja o mesmo para ToggleButtons regulares.
Liguei o IsChecked para cada botão a um valor de enum "mode" usando EnumToBooleanConverter daqui Como vincular RadioButtons a um enum? (Especifique o valor de enum para este botão usando o ConverterParameter. Você deve ter um valor de enum para cada botão)
Para evitar desmarcar um botão que já esteja marcado, coloque isso no seu código para o evento Click de cada um dos RibbonToggleButtons:
fonte
Para ajudar pessoas como Julian e eu (dois minutos atrás ...). Você pode derivar
RadioButton
desse tipo.Então, você pode usá-lo como Uday Kiran sugeriu ...
Este método permite que apenas um
ToggleButton
seja deChecked
cada vez e também permite o cancelamento da verificação.fonte
Peguei algumas respostas e adicionei um código extra. Agora você pode ter diferentes grupos de botões de alternância que agem como um botão de alternância:
E os diferentes grupos de botões de opção que se parecem com botões de alternância:
fonte