0

目前我有这个视觉:

在此处输入图像描述

我想要一个与我的边框相匹配的悬停效果,并且在项目之间有一个空间。

  <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,我失去了悬停效果。

4

1 回答 1

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>

如果没有,获取默认样式会稍微困难一些。我建议使用混合。在那里,您可以在设计器中右键单击列表框并选择编辑模板:请记住首先从列表框中删除 ItemContainerStyle

在此处输入图像描述

这将创建一个新的静态资源,您可以在其中建立您的模板。

于 2013-10-31T15:23:49.837 回答