2013-07-22 128 views
13

我在一個可以與觸摸一起使用的應用程序中有一些單選按鈕。 因爲最終用戶可以有粗厚的手指,所以我想讓圓圈和文字變得更大。調整單選按鈕大小

問題是,我只能使文本更大,而不是單選按鈕中的圓圈。

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

使用高度也不起作用。它使得單選按鈕更大,但圓圈保持不變。

任何提示或答案表示讚賞。

+0

在viewbox中使用它,並改變它的高度 – whoisthis

+0

+1爲思考世界的厚厚的手指! –

回答

23

這應該適合你。

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

另一種選擇是爲RadioButton編寫自己的ControlTemplate並根據需要更改其外觀。

+0

工作正常,謝謝! –

+0

無論什麼原因,當我申請,它擾亂了單選按鈕的對齊 – Maslow

+0

非常好!它是一個快速簡單的解決方案,而不是製作自定義模板 – t4taurus

2

若要僅調整圓圈大小,可以使用RadioButton模板並更改WidthHeightBulletChrome

<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

我得到 >命名空間「clr-namespace:Microsoft.Windows.Themes; assembly = PresentationFramework.Aero」中不存在名稱「BulletChrome」。 – Maslow

+0

該項目需要引用'PresentationFramework.Aero'或任何定義'BulletChrome'的地方,如https://msdn.microsoft.com/en-us/library/microsoft.windows.themes.bulletchrome(v = vs.110)的.aspx – Maslow

0

一個多的黑客是嘗試簡單地改造對象,具有類似......

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

只要記住ScaleXScaleY需求相等,否則對象會看起來很尷尬

根據我自己的實驗,這個渲染沒有任何搞砸(例如沒有對齊問題等)