2017-03-23 4 views
0

Voici donc ma commande GroupBox:WPF: label CornerRadius sous Border

<Grid Width="550" Height="140" Margin="20,0,0,0"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="20"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Border BorderThickness="1,1,1,0" BorderBrush="Gray" CornerRadius="5,5,0,0" > 
     <Label 
      Height="25" 
      Width="60" 
      HorizontalAlignment="Left" 
      Background="#FF7AA0CD" 
      BorderBrush="Gray" 
      BorderThickness="1" 
      Foreground="Gainsboro" 
      Content=" Options" 
      Margin="10,-18,0,0"/> 
    </Border> 
    <Border Grid.Row="1" BorderThickness="1,0,1,1" BorderBrush="Gray" CornerRadius="0,0,5,5"> 
     <StackPanel Orientation="Vertical" Margin="0,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"> 
      <StackPanel Orientation="Horizontal" Margin="10,0,0,0" > 
       <Label 
     Content="Interface: " 
     Margin="0,3,0,0"/> 
       <ComboBox 
      MaxDropDownHeight="110" 
      Style="{DynamicResource ComboBoxFlatStyle}" 
      ItemsSource="{Binding interfaces}" 
      Width="400" 
      Height="28" 
      SelectedIndex="1" 
      FontSize="12" 
      Margin="40,0,0,0"/> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" Margin="10,2,0,0"> 
       <Label 
      Content="Capture filter:" 
      Margin="0,3,0,0"/> 
       <TextBox 
      Name="tbSnifferFilter" 
      Width="399" 
      Height="28" 
      TextChanged="tbSnifferFilter_TextChanged" 
      LostFocus="tbSnifferFilter_LostFocus" 
      Margin="21,0,0,0"> 
        <TextBox.ToolTip> 
         <TextBlock> 
       The expression selects which packets will be dumped. 
       <LineBreak /> 
       If no expression is given, all packets on the net will be accepte, 
       <LineBreak /> 
       Otherwise, only packets for which expression is `true' will be accepted. 
         </TextBlock> 
        </TextBox.ToolTip> 
       </TextBox> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" Margin="10,3,0,0"> 
       <Label 
     Content="Capture file:" 
     Margin="0,3,0,0"/> 
       <TextBox 
      Name="tbSnifferCaptureFile" 
      Width="365" 
      Height="28" 
      ToolTip="Capture file name." 
      TextChanged="tbSnifferFilter_TextChanged" 
      IsReadOnly="True" 
      Margin="29,0,0,0"/> 
       <Button 
      Name="btnSaveCaptureFile" 
      Content="..." 
      Width="32" 
      Height="28" 
      ToolTip="Select a file to which captured data will be wirtten."          
      Click="btnSaveCaptureFile_Click" 
      GotMouseCapture="btnSaveCaptureFile_GotMouseCapture" 
      LostMouseCapture="btnSaveCaptureFile_LostMouseCapture"          
      Margin="3,0,0,0"/> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" Margin="10,3,0,0"> 
       <Label 
      Content="Packet length:" 
      Margin="0,1,0,0"/> 
       <Controls:NumericUpDown 
      Name="nudSnoplen" 
      Minimum="0" 
      Maximum="65535" 
      Value="65535" 
      StringFormat="N0" 
      MinWidth="50" 
      HideUpDownButtons="True" 
      Width="20" 
      Height="28" 
      ToolTip="Length of the packet that has to be retained." 
      Margin="19,0,0,0" /> 
       <Label 
      Content="bytes" 
      Margin="0,2,0,0"/> 
       <CheckBox 
      Name="cbPromiscuousMode" 
      Content="Promiscuous mode" 
      FontFamily="Ariel" 
      VerticalAlignment="Top" 
      IsChecked="True" 
      Height="25" 
      Margin="20,1,0,0"> 
        <CheckBox.ToolTip> 
         <TextBlock> 
       In normal operation, an adapter only captures packets from the network that, 
       <LineBreak /> 
       are destined to it, the packets exchanged by other hosts are therefore ignored. 
       <LineBreak /> 
       Instead, when the adapter is in promiscuous mode it captures all packets, 
       <LineBreak /> 
       whether they are destined to it or not. 
         </TextBlock> 
        </CheckBox.ToolTip> 
       </CheckBox> 
      </StackPanel> 
     </StackPanel> 
    </Border> 
</Grid> 

enter image description here

donc je veux mettre mon LabelCornerRadius et j'essaie de mettre ce Label dans un autre Border mais il semble que The property "Child" can only be set once. Des suggestions pour arrondir mon coin Label?

donc je veux mettre mon LabelCornerRadius et j'essaie de mettre ce Label dans un autre Border mais il semble que The property "Child" can only be set once. Toute suggestion comment arrondir mon coin Label?

Répondre

1

Ajoutez ce qui suit à votre style et vous obtiendrez des bords arrondis sur votre étiquette. Je l'ai arbitrairement mis à "3" ci-dessous, mais vous pouvez le définir selon vos besoins.

<Window.Resources> 
    <Style x:Key="MyLabelStyle" TargetType="Label"> 
     <Setter Property="Template"> 
     <Setter.Value> 
    <ControlTemplate TargetType="{x:Type Label}"> 
     <Border BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}" 
      Background="{TemplateBinding Background}" 
      Padding="{TemplateBinding Padding}" 
      SnapsToDevicePixels="true" 
      CornerRadius="3"> 
      <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsEnabled" Value="false"> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Setter.Value> 
</Setter> 
    </Style> 
</Window.Resources> 

Ajoutez le code ci-dessus dans windows.resources et dans votre étiquette style = "{StaticResource MyLabelStyle}"

<Label Style="{StaticResource MyLabelStyle}"></Label> 
+0

Où exactement j'ai besoin de mettre ce code? – user979033

+0

J'ai modifié mon code pour vous. Vérifie-le maintenant. –

0

Vous devez mettre votre Label dans un Border

<Border BorderThickness="1,1,1,0" 
     BorderBrush="Gray" 
     CornerRadius="5,5,0,0"> 
    <Border Margin="10,-18,0,0" 
      Background="#FF7AA0CD" 
      BorderBrush="Gray" 
      Height="25" 
      CornerRadius="5" 
      Width="60" 
      HorizontalAlignment="Left"> 
    <Label BorderThickness="1" 
      Foreground="Gainsboro" 
      Content=" Options"/> 
    </Border> 
</Border> 

Mais la meilleure approche serait de définir le modèle GroupBox par défaut.