Je cherche à faire un modèle de bouton radio qui ressemblera à ce qui suit: enter image description hereObtenir texte à aligner dans un modèle de bouton radio
Et voici le modèle que j'ai ajouté:
<Style
x:Key="MainWindowTemplateConfigurationWindowRadioButtonStyle"
TargetType="RadioButton"
BasedOn="{StaticResource MainWindowRadioButtonImageStyle}">
<Setter
Property="Margin"
Value="3,3" />
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type RadioButton}">
<Border BorderThickness="2" BorderBrush="{StaticResource BRInactiveItemBackgroundBrush}" >
<StackPanel x:Name="Panel" Background="{StaticResource ControlsLightBorderBrush}" VerticalAlignment="Stretch"
>
<TextBlock x:Name="ButtonText" TextAlignment="Center" FontSize="25" Padding="7,7" VerticalAlignment="Center"
/>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.SystemConfiguration}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="True" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource SystemConfigurationRadioButton}" />
<Setter
Property="Background"
TargetName="Panel"
Value="{StaticResource BRInactiveItemBackgroundBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.SystemConfiguration}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource SystemConfigurationRadioButton}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.PlateSetup}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="True" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource PlateSetup}" />
<Setter
Property="Background"
TargetName="Panel"
Value="{StaticResource BRInactiveItemBackgroundBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.PlateSetup}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource PlateSetup}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.ThermalCyclingProtocol}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="True" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource ThermalProtocol}" />
<Setter
Property="Background"
TargetName="Panel"
Value="{StaticResource BRInactiveItemBackgroundBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.ThermalCyclingProtocol}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource ThermalProtocol}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.Reports}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="True" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource ReportsRadioButton}" />
<Setter
Property="Background"
TargetName="Panel"
Value="{StaticResource BRInactiveItemBackgroundBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Tag, RelativeSource={RelativeSource Self}}"
Value="{x:Static views:DisplayModes.Reports}"/>
<Condition
Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter
Property="Text"
TargetName="ButtonText"
Value="{StaticResource ReportsRadioButton}" />
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Cependant, le résultat que j'obtiens ressemble à ceci: enter image description here
J'ai essayé de jouer avec toutes les propriétés entre le StackPanel et le TextBlock pour aligner le texte le centre du bouton radio, mais quand j'obtiens cela, j'ai un résultat de l'alignement central du texte, mais le contenu ne convient pas pour remplir l'espace du bouton radio. Je ne peux pas joindre plus d'images, puisque je n'ai pas assez de réputation, des excuses ...
que je reçois essentiellement en changeant VerticalAlignment de StackPanel au centre de Stretch, mais alors il ne remplit pas toute la région correctement. Je force la hauteur de chaque RadioButton où je consomme ce style à avoir la même hauteur que le plus haut bouton (celui qui indique le Protocole de Cylindre Thermique), et il ne semble pas que je puisse comprendre comment faire pour que le texte soit centré et remplissez la taille supplémentaire en même temps ...
Toute aide serait appréciée. Voici comment je pose le bouton radio si elle aide:
<Grid Margin="5,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" >
<Grid.RowDefinitions>
<RowDefinition SharedSizeGroup="A"/>
<RowDefinition SharedSizeGroup="A"/>
<RowDefinition SharedSizeGroup="A"/>
<RowDefinition SharedSizeGroup="A"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<RadioButton Grid.Row="0" Style="{StaticResource MainWindowTemplateConfigurationWindowRadioButtonStyle}"
HorizontalAlignment="Stretch"
Height="{Binding ActualHeight, ElementName=ThermalCyclingProtocolButton}"
Tag="{x:Static views:DisplayModes.SystemConfiguration}">
</RadioButton>
<RadioButton Grid.Row="1" Style="{StaticResource MainWindowTemplateConfigurationWindowRadioButtonStyle}"
HorizontalAlignment="Stretch"
Height="{Binding ActualHeight, ElementName=ThermalCyclingProtocolButton}"
Tag="{x:Static views:DisplayModes.PlateSetup}">
</RadioButton>
<RadioButton Grid.Row="2" Style="{StaticResource MainWindowTemplateConfigurationWindowRadioButtonStyle}"
HorizontalAlignment="Stretch" x:Name="ThermalCyclingProtocolButton"
Tag="{x:Static views:DisplayModes.ThermalCyclingProtocol}">
</RadioButton>
<RadioButton Grid.Row="3" Style="{StaticResource MainWindowTemplateConfigurationWindowRadioButtonStyle}"
HorizontalAlignment="Stretch"
Height="{Binding ActualHeight, ElementName=ThermalCyclingProtocolButton}"
Tag="{x:Static views:DisplayModes.Reports}">
</RadioButton>
</Grid>
</Grid>
</Grid>
</Grid>