2013-10-31 28 views
0

之间的空间目前我有这种视觉:列表框与悬停效果,项目和没有填充

enter image description here

我想有符合我的边界,一个悬停效果,并有项目之间的空间。

<ListBox Grid.Column="1" Grid.Row="0" Margin="5,0,0,0" Grid.RowSpan="2" ItemsSource="{Binding Programme.Versions, UpdateSourceTrigger=PropertyChanged}" MouseLeftButtonUp="ChangerVersion_MouseLeftButtonUp" Style="{StaticResource NoBorder}"> 
     <!--<ListBox.ItemsPanel> 
      <ItemsPanelTemplate > 
       <WrapPanel IsItemsHost="True" Orientation="Vertical" /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> --> 
     <ListBox.ItemContainerStyle > 
      <Style TargetType="ListBoxItem"> 
       <!--<Setter Property="Margin" Value="0,0,0,2"/> 
       <Setter Property="Padding" Value="0"/> 
       <Setter Property="Cursor" Value="Hand"/>--> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ItemTemplate> 
      <DataTemplate DataType="bOs:VersionBO" > 
       <Border Padding="0" BorderThickness="1" BorderBrush="{DynamicResource Accent}" > 
        <Grid Cursor="Hand"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="7"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="*" /> 
         </Grid.RowDefinitions> 
         <Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Fill="{DynamicResource Accent}" /> 
         <TextBlock Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Background="{DynamicResource Accent}" Foreground="White" Margin="5" FontSize="18"> 
          <TextBlock.Text> 
           <MultiBinding StringFormat="{}V{0}.{1}"> 
            <Binding Path="Numero" /> 
            <Binding Path="NumeroModification" /> 
           </MultiBinding> 
          </TextBlock.Text> 
         </TextBlock> 
         <TextBlock Text="{Binding Description}" Grid.Column="2" Grid.Row="0" /> 
         <Image Grid.Column="2" Grid.Row="0" Width="20" Margin="0,2,2,0" Visibility="{Binding Interdit, Converter={StaticResource BooleanToVisibilityConverter}}" Source="../Images/Icones/interdit.png" HorizontalAlignment="Right" /> 
         <TextBlock Grid.Column="2" Grid.Row="1"> 
          <TextBlock.Text> 
           <MultiBinding Converter="{StaticResource MultiValuesWithSeparatorConverter}"> 
            <Binding Path="Langue.Libelle" /> 
            <Binding Path="SousTitre" /> 
           </MultiBinding> 
          </TextBlock.Text> 
         </TextBlock> 
        </Grid> 
       </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

当我重新定义ItemContainerStyle时,我失去了悬停效果。

回答

0

您是否使用了一些自定义主题?如果是这样,应用程序中应该有某个默认的ListBoxItemStyle资源。

那么你的解决方案很简单:

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem" BasedOn="{StaticResource ListBoxItemStyle}"> 
     <Setter Property="Margin" Value="0,0,0,2"/> 
     <Setter Property="Padding" Value="0"/> 
     <Setter Property="Cursor" Value="Hand"/> 
    </Style> 
</ListBox.ItemContainerStyle> 

如果没有,获取默认的风格将是稍硬。我建议使用Blend。您可以在设计器中右键单击您的列表框,然后选择编辑模板:请先记住从列表框中删除ItemContainerStyle

enter image description here

这将创建一个新的静态资源,你可以基于模板。

+0

我试过了'Blend thing':我已经提取了默认模板,然后我用这个默认样式绑定了“ItemContainerStyle”,但悬停效果消失了,并且项目的宽度不再是常量 – Pak