2
votes

I have a ListBox. It has a white background. How can I get rid of it?

Here is the XAML I'm trying. Whatever I do, I can't get rid of that background. (I'm not sure if it's on each item, which happen to take up all the space in the ListBox, or if it's on the background of the ListBox itself.)

<ListBox x:Name="topThreeHits" ItemsSource="{Binding TopThreeHits}" Margin="0,10,0,0">
                <ListBox.ItemContainerStyle>
                    <Style TargetType="ListBoxItem">
                        <Setter Property="Background" Value="Transparent" />
                    </Style>
                </ListBox.ItemContainerStyle>
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" Background="Transparent"/>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="10,0" Background="Transparent">
                            <Image Source="{Binding Image, FallbackValue=/PlumPudding;component/Images/file.png}" />
                            <TextBlock>
                            <Run Text="{Binding Name, FallbackValue='File Name'}" FontWeight="Bold" />
                            <Run Text="." Foreground="#787878" FontWeight="Light" />
                            <Run Text="{Binding TypeExtension, FallbackValue='type'}" Foreground="#787878" FontWeight="Light" />
                            </TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

I'm using Silverlight 4.

2

2 Answers

3
votes

Your code is working fine, and properly setting the background style. I am assuming what you want to do is blow away the default item container completely so there is no background, including rollovers, etc.

The best way to do that is like this:

     <ListBox.ItemContainerStyle>
      <Style TargetType="ListBoxItem">
        <Setter Property="Template" >
          <Setter.Value>
            <ControlTemplate TargetType="ListBoxItem">
              <ContentPresenter Content="{TemplateBinding Content}" />
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </ListBox.ItemContainerStyle>
1
votes

I tried to add a Border around the ListBox with a Green Background and set the Background to Transparent for your ListBox and it seems to be working fine.

<Border Background="Green">
    <ListBox x:Name="topThreeHits"
             Background="Transparent"
             ItemsSource="{Binding Customers}" Margin="0,10,0,0">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Background" Value="Transparent" />
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" Background="Transparent"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="10,0" Background="Transparent">  
                    <Image Source="{Binding Image, FallbackValue=/PlumPudding;component/Images/file.png}" />  
                    <TextBlock>  
                    <Run Text="{Binding Name, FallbackValue='File Name'}" FontWeight="Bold" />  
                    <Run Text="." Foreground="#787878" FontWeight="Light" />  
                    <Run Text="{Binding TypeExtension, FallbackValue='type'}" Foreground="#787878" FontWeight="Light" />  
                    </TextBlock>  
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Border>