在WPF中的ListBoxItem上添加图像

时间:2011-11-16 15:02:55

标签: wpf listboxitem

我有一个带有一些ListBoxItems的ListBox。每个ListBoxItem包含一些文本和背景图像。当用户单击ListBoxItem时,我想在ListBoxItem上添加一个图像(它用一些额外的外观装饰该项目)。

我正在寻找一种方法将图像叠加到点击的ListBoxItem上。那是我到目前为止的代码:

    <ListBox Margin="0,34,0,25.113" Background="{x:Null}" BorderThickness="0">
        <ListBoxItem Content="First Item" Height="71.96" Margin="0,10,0,0">
            <ListBoxItem.Background>
                <ImageBrush ImageSource="Untitled-4.png"/>
            </ListBoxItem.Background>
        </ListBoxItem>
    </ListBox>

1 个答案:

答案 0 :(得分:2)

将您的ListBoxItem.Content放在允许重叠控件的面板中,例如Grid,并使您的顶部图片的Visibililty基于ListBoxItem.IsSelected

<ListBox.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</ListBox.Resources>

<ListBoxItem Height="71.96" Margin="0,10,0,0">
    <ListBoxItem.Background>
        <ImageBrush ImageSource="Untitled-4.png"/>
    </ListBoxItem.Background>
    <Grid>
        <TextBlock Text="First Item" 
                   VerticalAlignment="Center" HorizontalAlignment="Center" />

        <Image Source="SomeImage.jpg"
               Visibility="{Binding IsSelected, 
                   RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, 
                   Converter={StaticResource BooleanToVisibilityConverter}}" />
    </Grid>
</ListBoxItem>

修改

您还可以通过覆盖HighlightBrush颜色并使其透明来删除SelectedItem的蓝色背景

<ListBox.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />

    <Style TargetType="{x:Type ListBoxItem}">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
        </Style.Resources>
    </Style>
</ListBox.Resources>