2013-10-31 25 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