Silverlight: сделать фон списка прозрачным? - PullRequest
2 голосов
/ 11 декабря 2010

У меня есть ListBox. У него белый фон. Как от этого избавиться?

Вот тот XAML, который я пробую. Что бы я ни делал, я не могу избавиться от этого фона. (Я не уверен, находится ли он на каждом предмете, который занимает все пространство в ListBox, или если он находится на фоне самого ListBox.)

<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>

Я использую Silverlight 4.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

Ваш код работает нормально и правильно устанавливает стиль фона. Я предполагаю, что вы хотите полностью удалить контейнер элемента по умолчанию, чтобы не было фона, включая ролловеры и т. Д.

Лучший способ сделать это так:

     <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 голос
/ 11 декабря 2010

Я попытался добавить рамку вокруг ListBox с зеленым фоном и установить прозрачный фон для вашего ListBox, и, похоже, он работает нормально.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...