Калибровка радиоблока

У меня есть некоторые радиокнопки в приложении, которое работает с сенсорным экраном. Поскольку у конечного пользователя могут быть толстые пальцы, я хочу, чтобы круг и текст были больше в радиоблоке.

Проблема в том, что я могу сделать текст больше, а не круг в радиоблоке.

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

Использование высоты тоже не работает. Это делает радиоблок больше, но круг остается тем же.

Любые намеки или ответы приветствуются.

Ответы

Ответ 1

Это должно сработать для вас.

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

Другая альтернатива - написать свой собственный ControlTemplate для RadioButton и изменить его внешний вид по своему усмотрению.

Ответ 2

Чтобы изменить размер только круга, можно использовать шаблон RadioButton и изменить Width и Height на 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>

Ответ 3

Больше hack будет пытаться просто преобразовать объект с чем-то вроде...

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

Просто помните, что ScaleX и ScaleY должны быть равны, иначе объект будет выглядеть неловко

В соответствии с моими собственными экспериментами рендеринг этого вовсе не перепутался (например, никаких проблем с выравниванием и т.д.)