2016-07-10 6 views
2

Je ne peux pas fixe mon problème sur le remplissage ListBox sur itemscontainerComment supprimer la marge sur listbox itemscontainer dans wpf?

<Style TargetType="ListBoxItem" x:Key="MyListBoxItem"> 
    <Setter Property="Template"> 
     <ControlTemplate TargetType="ListBoxItem"> 
      <Border BorderThickness="0 0 1 1" BorderBrush="Blue"> 
       <TextBlock Text="{Binding MyName}"/> 
      </Border> 
     </ControlTemplate> 
    </Setter> 
</Style> 

<Style TargetType="ListBox" x:Key="MyListBox"> 
    <Setter Property="ListBoxItemsContainer" Value="{StaticResource MyListBoxItem}"/> 
    <Setter Property="Margin" Value="0"/> 
    <Setter Property="Padding" Value="0"/> 
    <Setter Property="Background" Value="Red"/> 
    <Setter Property="BorderThickness" Value="1 1 0 0"/> 
    <Setter Property="BorderBrush" Value="Blue"/> 
</Style> 

<ListBox Style="{StaticResource MyListBox}"/> 

Comment attraper le pixel 1 dans des conteneurs d'articles listbox?

Aidez-moi s'il vous plaît!

1 pixel red space!!

+0

pouvez-vous afficher le code xaml entier de la liste? –

+0

je peux montrer le code source pour vous au bout d'une heure merci pour votre aide –

Répondre

1

Le rembourrage est hard coded dans le modèle de commande. On dirait que le template on MSDN est déjà mis à jour (Padding = "{TemplateBinding Padding}"), mais celui par défaut utilisé dans VS ne l'est pas. Comme toujours lors de la modification de modèles de contrôle, il faut beaucoup de XAML pour tout redéfinir.

Altered à votre cas particulier

Référence

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

Ressources

<ControlTemplate x:Key="ValidationToolTipTemplate"> 
    <Grid x:Name="Root" Margin="5,0" RenderTransformOrigin="0,0" Opacity="0"> 
     <Grid.RenderTransform> 
      <TranslateTransform x:Name="xform" X="-25"/> 
     </Grid.RenderTransform> 
     <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup Name="OpenStates"> 
       <VisualStateGroup.Transitions> 
        <VisualTransition GeneratedDuration="0"/> 
        <VisualTransition To="Open" GeneratedDuration="0:0:0.2"> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetName="xform" Storyboard.TargetProperty="X" To="0" Duration="0:0:0.2"> 
           <DoubleAnimation.EasingFunction> 
            <BackEase Amplitude=".3" EasingMode="EaseOut"/> 
           </DoubleAnimation.EasingFunction> 
          </DoubleAnimation> 
          <DoubleAnimation Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2"/> 
         </Storyboard> 
        </VisualTransition> 
       </VisualStateGroup.Transitions> 
       <VisualState x:Name="Closed"> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To="0" Duration="0"/> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Open"> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="xform" Storyboard.TargetProperty="X" To="0" Duration="0"/> 
         <DoubleAnimation Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To="1" Duration="0"/> 
        </Storyboard> 
       </VisualState> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 

     <Border Margin="4,4,-4,-4" Background="#052A2E31" CornerRadius="5"/> 
     <Border Margin="3,3,-3,-3" Background="#152A2E31" CornerRadius="4"/> 
     <Border Margin="2,2,-2,-2" Background="#252A2E31" CornerRadius="3"/> 
     <Border Margin="1,1,-1,-1" Background="#352A2E31" CornerRadius="2"/> 

     <Border Background="#FFDC000C" CornerRadius="2"/> 
     <Border CornerRadius="2"> 
      <TextBlock 
        UseLayoutRounding="false" 
        Foreground="White" Margin="8,4,8,4" MaxWidth="250" TextWrapping="Wrap" Text="{Binding (Validation.Errors)[0].ErrorContent}"/> 
     </Border> 
    </Grid> 
</ControlTemplate> 

<Style TargetType="ListBoxItem" x:Key="MyListBoxItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Border BorderThickness="0 0 1 1" BorderBrush="Blue"> 
        <TextBlock Text="{Binding MyName}"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Style TargetType="ListBox"> 
    <Setter Property="ItemContainerStyle" Value="{StaticResource MyListBoxItem}"/> 
    <Setter Property="Padding" Value="0"/> 
    <Setter Property="Background" Value="Red"/> 
    <Setter Property="BorderThickness" Value="1 1 0 0"/> 
    <Setter Property="BorderBrush" Value="Blue"/> 
    <Setter Property="Foreground" Value="#FF000000"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left" /> 
    <Setter Property="VerticalContentAlignment" Value="Top" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBox"> 
       <Grid> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="ValidationStates"> 
          <VisualState x:Name="Valid"/> 
          <VisualState x:Name="InvalidUnfocused"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
             <DiscreteObjectKeyFrame KeyTime="0" > 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="InvalidFocused"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
             <DiscreteObjectKeyFrame KeyTime="0" > 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsOpen"> 
             <DiscreteObjectKeyFrame KeyTime="0" > 
              <DiscreteObjectKeyFrame.Value> 
               <sys:Boolean>True</sys:Boolean> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Border CornerRadius="2" 
           BorderBrush="{TemplateBinding BorderBrush}" 
           BorderThickness="{TemplateBinding BorderThickness}"> 
         <ScrollViewer x:Name="ScrollViewer" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="Transparent" BorderThickness="0" > 
          <ItemsPresenter /> 
         </ScrollViewer> 
        </Border> 
        <Border x:Name="ValidationErrorElement" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" BorderBrush="#FFDB000C" Visibility="Collapsed"> 
         <ToolTipService.ToolTip> 
          <ToolTip x:Name="validationTooltip" Template="{StaticResource ValidationToolTipTemplate}" Placement="Right" 
              PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
              DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"> 
           <ToolTip.Triggers> 
            <EventTrigger RoutedEvent="Canvas.Loaded"> 
             <EventTrigger.Actions> 
              <BeginStoryboard> 
               <Storyboard> 
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsHitTestVisible"> 
                 <DiscreteObjectKeyFrame KeyTime="0" > 
                  <DiscreteObjectKeyFrame.Value> 
                   <sys:Boolean>true</sys:Boolean> 
                  </DiscreteObjectKeyFrame.Value> 
                 </DiscreteObjectKeyFrame> 
                </ObjectAnimationUsingKeyFrames> 
               </Storyboard> 
              </BeginStoryboard> 
             </EventTrigger.Actions> 
            </EventTrigger> 
           </ToolTip.Triggers> 
          </ToolTip> 
         </ToolTipService.ToolTip> 
         <Grid Width="10" Height="10" HorizontalAlignment="Right" Margin="0,-4,-4,0" VerticalAlignment="Top" Background="Transparent"> 
          <Path Margin="-1,3,0,0" Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="#FFDC000C"/> 
          <Path Margin="-1,3,0,0" Data="M 0,0 L2,0 L 8,6 L8,8" Fill="#ffffff"/> 
         </Grid> 
        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Notez que le ControlTemplate pour ValidationTooltip est nécessaire selon MSDN

La valeur par défaut ControlTempl mangé pour ListBox et ListBoxItem référence le ControlTemplate pour ValidationTooltip. Le code XAML suivant indique le ControlTemplate pour ValidationTooltip que vous devez spécifier lorsque vous travaillez avec les modèles de contrôle ListBox ou ListBoxItem.