2013-07-22 3 views
13

Ich habe Radiobuttons in einer App, die mit Touch funktioniert. Da der Endanwender dicke Finger haben kann, möchte ich den Kreis und Text in den Radiobutton größer machen.Größe des Radiobuttons

Problem ist, ich kann den Text nur größer machen, nicht den Kreis im Radiobutton.

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

Die Höhe funktioniert auch nicht. Es macht den Radiobutton größer, aber der Kreis bleibt gleich.

Jeder Hinweis oder Antwort ist willkommen.

+0

Verwenden Sie es in Viewbox und ändern Sie seine Höhe – whoisthis

+0

+1 für das Denken über die dicken Finger der Welt! –

Antwort

23

Dies sollte für Sie arbeiten.

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

Eine andere Alternative ist, Ihr eigenes ControlTemplate für den RadioButton zu schreiben und sein Aussehen zu ändern, wie Sie wollen.

+0

Funktioniert gut, danke! –

+0

aus welchem ​​Grund auch immer, wenn ich das anwende, vermasselt es die Ausrichtung des Radiobuttons – Maslow

+0

Very Nice! es ist eine schnelle und einfache Lösung, anstatt benutzerdefinierte Vorlage zu machen – t4taurus

2

Um nur die Größe des Kreises zu ändern, kann man die RadioButton Vorlage verwenden und Width und Height von BulletChrome ändern.

<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

Ich bekomme > Der Name "BulletChrome" existiert nicht im Namespace "Clr-Namespace: Microsoft.Windows.Themes; Assembly = PresentationFramework.Aero". – Maslow

+0

Dieses Projekt benötigte einen Verweis auf 'PresentationFramework.Aero' oder einen der Orte, die' BulletChrome' definieren, wie in https://msdn.microsoft.com/en-us/library/microsoft.windows.themes.bulletchrome(v) definiert = vs.110) .aspx – Maslow

0

Ein eher ein hacken wäre, zu versuchen, das Objekt mit etwas zu einfach zu verwandeln wie ...

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

Denken Sie daran, dass ScaleX und ScaleY Bedürfnisse gleich sein, da sonst das Objekt wird unbeholfen gestreckt

Nach meinen eigenen Experimenten, ist das Rendering überhaupt nicht durcheinander (zB keine Ausrichtungsprobleme, etc.)