« RadioButton » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 28 : Ligne 28 :


<kode lang='xaml'>
<kode lang='xaml'>
<Style x:Key="RadioButtonListItem"
<Style x:Key="RadioButtonHorizontalListBox"
       TargetType="{x:Type ListBoxItem}">
       TargetType="ListBox">
     <Setter Property="Template">
     <Setter Property="ItemsPanel">
         <Setter.Value>
         <Setter.Value>
             <ControlTemplate TargetType="ListBoxItem">
             <ItemsPanelTemplate>
                 <DockPanel LastChildFill="True"
                 <VirtualizingStackPanel Orientation="Horizontal" />
                          Background="{TemplateBinding Background}"
             </ItemsPanelTemplate>
                          HorizontalAlignment="Stretch"
                          VerticalAlignment="Center">
 
                    <RadioButton IsChecked="{TemplateBinding IsSelected}"
                                Focusable="False"
                                IsHitTestVisible="False"
                                VerticalAlignment="Center"
                                Margin="0,0,4,0" />
 
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}"
                                      ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                                      ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
                                      HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                                      SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                </DockPanel>
             </ControlTemplate>
         </Setter.Value>
         </Setter.Value>
     </Setter>
     </Setter>
</Style>


<Style x:Key="RadioButtonList"
     <Setter Property="Template">
      TargetType="ListBox">
    <Style.Resources>
        <Style TargetType="Label">
            <Setter Property="Padding" Value="0" />
        </Style>
    </Style.Resources>
 
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Background" Value="Transparent" />
 
    <Setter Property="ItemContainerStyle" Value="{StaticResource RadioButtonListItem}" />
 
     <Setter Property="Control.Template">
         <Setter.Value>
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type ListBox}">
             <ControlTemplate TargetType="{x:Type ListBox}">
                 <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                 <Border BorderThickness="1,0,0,0"
                        BorderBrush="{TemplateBinding BorderBrush}">
                    <ItemsPresenter />
                </Border>
             </ControlTemplate>
             </ControlTemplate>
         </Setter.Value>
         </Setter.Value>
     </Setter>
     </Setter>


     <Style.Triggers>
     <Setter Property="ItemContainerStyle">
         <Trigger Property="IsEnabled" Value="False">
         <Setter.Value>
            <Setter Property="TextBlock.Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
            <Style TargetType="ListBoxItem">
        </Trigger>
                <Setter Property="BorderBrush" Value="{Binding BorderBrush, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox, AncestorLevel=1}}" />
    </Style.Triggers>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <!-- RadioButton -->
                            <DockPanel Background="{TemplateBinding Background}">
 
                                <RadioButton IsChecked="{TemplateBinding IsSelected}"
                                            Focusable="False"
                                            IsHitTestVisible="False"
                                            VerticalAlignment="Center"
                                            Margin="0,0,4,0" />


</Style>
                                <ContentPresenter Content="{TemplateBinding ContentControl.Content}"
                                                  ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                                                  ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
                                                  HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                                                  VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                                                  SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                            </DockPanel>


<Style x:Key="HorizontalRadioButtonList"
                            <!-- -->
      BasedOn="{StaticResource RadioButtonList}"
                            <Grid Background="{TemplateBinding Background}">
      TargetType="ListBox">
                                <ToggleButton IsChecked="{TemplateBinding IsSelected}"
    <Setter Property="ItemsPanel">
                                              Content="{TemplateBinding Content}"
        <Setter.Value>
                                              Padding="10,5"
            <ItemsPanelTemplate>
                                              BorderThickness="0,1,1,1"
                 <VirtualizingStackPanel Background="Transparent"
                                              BorderBrush="{TemplateBinding BorderBrush}"
                                        Orientation="Horizontal" />
                                              Focusable="False"
             </ItemsPanelTemplate>
                                              IsHitTestVisible="False" />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                 </Setter>
             </Style>
         </Setter.Value>
         </Setter.Value>
     </Setter>
     </Setter>
</Style>
</Style>
</kode>
</kode>

Version du 30 mai 2022 à 16:29

DevExpress ListBoxEdit avec un style RadioButton

ListBox avec un style RadioButton

Xaml.svg
<ListBox SelectedIndex="{Binding Mode, Mode=TwoWay}"
         Style="{StaticResource HorizontalRadioButtonList}">
    <ListBoxItem Content="Mode 1" />
    <ListBoxItem Content="Mode 2" />
    <ListBoxItem Content="Mode 3" />
</ListBox>
Cs.svg
public Mode Mode
{
    get => mode;
    set => SetProperty(ref mode, value);
}

enum Mode
{
    Mode1,
    Mode2,
    Mode3
}
Xaml.svg
<Style x:Key="RadioButtonHorizontalListBox"
       TargetType="ListBox">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBox}">
                <Border BorderThickness="1,0,0,0"
                        BorderBrush="{TemplateBinding BorderBrush}">
                    <ItemsPresenter />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="ListBoxItem">
                <Setter Property="BorderBrush" Value="{Binding BorderBrush, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox, AncestorLevel=1}}" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <!-- RadioButton -->
                            <DockPanel Background="{TemplateBinding Background}">

                                <RadioButton IsChecked="{TemplateBinding IsSelected}"
                                             Focusable="False"
                                             IsHitTestVisible="False"
                                             VerticalAlignment="Center"
                                             Margin="0,0,4,0" />

                                <ContentPresenter Content="{TemplateBinding ContentControl.Content}"
                                                  ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                                                  ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
                                                  HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                                                  VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                                                  SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                            </DockPanel>

                            <!-- -->
                            <Grid Background="{TemplateBinding Background}">
                                <ToggleButton IsChecked="{TemplateBinding IsSelected}"
                                              Content="{TemplateBinding Content}"
                                              Padding="10,5"
                                              BorderThickness="0,1,1,1"
                                              BorderBrush="{TemplateBinding BorderBrush}"
                                              Focusable="False"
                                              IsHitTestVisible="False" />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>
    </Setter>
</Style>