Czy możliwe jest nadanie stylu pola wyboru WPF tak, aby miało zaokrąglone rogi, modyfikując styl niestandardowy? Jeśli tak, jak to się robi?

1
binncheol 24 wrzesień 2012, 17:12

2 odpowiedzi

Najlepsza odpowiedź

Najlepszy sposób, jaki znam

<CheckBox Content="CheckBox" HorizontalAlignment="Left" Height="20" Margin="134,143,0,0" VerticalAlignment="Top" Width="176" Style="{DynamicResource CheckBoxStyle1}"/>

Słownik zasobów

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
<Style x:Key="CheckBoxStyle1" TargetType="{x:Type CheckBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type CheckBox}">
                <BulletDecorator Background="Transparent" SnapsToDevicePixels="true">
                    <BulletDecorator.Bullet>
                        <Border Background="#FFAEB3B9" BorderThickness="2" CornerRadius="10">
                            <Microsoft_Windows_Themes:BulletChrome IsChecked="{TemplateBinding IsChecked}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/>
                        </Border>
                    </BulletDecorator.Bullet>
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </BulletDecorator>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
</ResourceDictionary>
1
Afshin 24 wrzesień 2012, 17:29

Tak. To jest możliwe.

Jeśli spojrzysz tu, możesz uzyskać pełny styl istniejącego pola wyboru i wygląda na to, że Border nie jest rysowany przez dekoratora. Po prostu zmień tę sekcję w swoim stylu i zastosuj ją.

<Border x:Name="Border"
                Width="13"
                Height="13"
 <!--Here-->        CornerRadius="0"
                BorderThickness="1">
          <Border.BorderBrush>
2
AlSki 24 wrzesień 2012, 17:23