2013-07-22 2 views
13

Ho alcuni pulsanti radio in un'app che funziona con il tocco. Poiché l'utente finale può avere dita spesse, voglio rendere il cerchio e il testo con il pulsante radio più grande.Dimensionamento del pulsante radio

Il problema è che posso solo ingrandire il testo, non il cerchio del radio.

<RadioButton VerticalAlignment="Center" x:Name="rbtnContainers" Click="SetContainers" FontSize="18">Containers</RadioButton> 

L'altezza di utilizzo non funziona. Rende il radiobutton più grande, ma il cerchio rimane lo stesso.

Qualsiasi suggerimento o risposta è apprezzato.

+0

usalo nella casella di visualizzazione e modifica l'altezza – whoisthis

+0

+1 per pensare alle dita spesse del mondo! –

risposta

23

Questo dovrebbe funzionare per voi.

<Viewbox Height="40"> 
    <RadioButton></RadioButton> 
</Viewbox> 

Un'altra alternativa è quella di scrivere il proprio ControlTemplate per il RadioButton e cambiare il suo aspetto come si desidera.

+0

Funziona bene, grazie! –

+0

per qualsiasi motivo quando lo applico, sconvolge l'allineamento del radiobutton – Maslow

+0

Molto bello! è una soluzione rapida e semplice piuttosto che creare un modello personalizzato – t4taurus

2

Per ridimensionare solo il cerchio, è possibile utilizzare il modello RadioButton e modificare Width e Height di BulletChrome.

<ControlTemplate TargetType="RadioButton" x:Key="CustomRadioButtonStyle" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"> 

     <BulletDecorator Background="#00FFFFFF"> 
      <BulletDecorator.Bullet> 
       <mwt:BulletChrome Height="25" Width="25" Background="{TemplateBinding Panel.Background}" BorderBrush="{TemplateBinding Border.BorderBrush}" RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}" RenderPressed="{TemplateBinding ButtonBase.IsPressed}" IsChecked="{TemplateBinding ToggleButton.IsChecked}" IsRound="True" /> 
      </BulletDecorator.Bullet> 
      <ContentPresenter RecognizesAccessKey="True" Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Margin="{TemplateBinding Control.Padding}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" /> 
     </BulletDecorator> 

     <ControlTemplate.Triggers> 

      <Trigger Property="ContentControl.HasContent"> 

       <Setter Property="FrameworkElement.FocusVisualStyle"> 

        <Setter.Value> 

         <Style TargetType="IFrameworkInputElement"> 

          <Style.Resources> 
           <ResourceDictionary /> 
          </Style.Resources> 

          <Setter Property="Control.Template"> 

           <Setter.Value> 

            <ControlTemplate> 
             <Rectangle Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2" Margin="14,0,0,0" SnapsToDevicePixels="True" /> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
         </Style> 
        </Setter.Value> 
       </Setter> 

       <Setter Property="Control.Padding"> 

        <Setter.Value> 
         <Thickness>4,0,0,0</Thickness> 
        </Setter.Value> 
       </Setter> 

       <Trigger.Value> 
        <s:Boolean>True</s:Boolean> 
       </Trigger.Value> 
      </Trigger> 

      <Trigger Property="UIElement.IsEnabled"> 

       <Setter Property="TextElement.Foreground"> 

        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" /> 
        </Setter.Value> 
       </Setter> 

       <Trigger.Value> 
        <s:Boolean>False</s:Boolean> 
       </Trigger.Value> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
+0

Mi sto prendendo > Il nome "BulletChrome" non esiste nello spazio dei nomi "clr-namespace: Microsoft.Windows.Themes; assembly = PresentationFramework.Aero". – Maslow

+0

quel progetto aveva bisogno di un riferimento a 'PresentationFramework.Aero' o ad uno qualsiasi dei posti che definisce' BulletChrome' come definito in https://msdn.microsoft.com/en-us/library/microsoft.windows.themes.bulletchrome(v = vs.110) aspx – Maslow

0

A più di una incidere potrebbe essere quella di cercare di trasformare semplicemente l'oggetto con qualcosa di simile ...

<RadioButton.RenderTransform> 
    <CompositeTransform ScaleX="5" ScaleY="5"/> 
</RadioButton.RenderTransform> 

Basta ricordare che ScaleX e ScaleY deve essere uguale, altrimenti l'oggetto sembrerà allungato goffamente

Secondo il mio stesso esperimento, il rendering di questo non è affatto incasinato (es. problemi di allineamento, ecc.)