2017-06-07 1 views
0

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> 

Répondre

1

Changé le panneau dans le modèle d'être un StackPanel d'être une grille. Cela a maintenant atteint l'effet pour lequel je regardais.