2010-12-10 23 views
2

Ich habe eine ListBox. Es hat einen weißen Hintergrund. Wie kann ich es loswerden?Silverlight: Den Hintergrund der Listbox transparent machen?

Hier ist der XAML Ich versuche es. Was auch immer ich tue, ich werde diesen Hintergrund nicht los. (Ich bin nicht sicher, ob es für jedes Element ist, das den ganzen Raum in der ListBox passieren zu nehmen, oder wenn es auf dem Hintergrund des ListBox selbst.)

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

Ich bin mit Silverlight 4.

Antwort

1

Ich habe versucht, einen Rahmen um die ListBox mit einem grünen Hintergrund hinzuzufügen und den Hintergrund für Ihre ListBox auf Transparent zu setzen, und es scheint zu funktionieren.

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

Ihr Code funktioniert einwandfrei und der Hintergrundstil wird ordnungsgemäß festgelegt. Ich gehe davon aus, was Sie tun möchten, vollständig den Standardelementbehälter wegblasen, so gibt es keinen Hintergrund, einschließlich Prolongationen usw.

Der beste Weg, das zu tun, ist wie folgt:

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

Eigentlich wollte ich nur den Hintergrund entfernen. Ich wollte den Rollover behalten. Ich habe den Code hinzugefügt, den Sie oben im Code angegeben haben, und jetzt funktioniert die Datenbindung nicht mehr - sie ist mit Standard-Fallback-Werten gefüllt. Ich bin mir nicht sicher, warum das so ist. –

+1

Großartig, das ist genau das, was ich tun wollte, ohne jede Eigenschaft des Listboxitems neu zu prüfen. Viel einfacher, danke. –

Verwandte Themen