2010-06-02 80 views
2

我正在尋找一種方法來設置一個gradientbrush作爲列表框項目的背景。我定義了一個DataTemplate並指定了一個漸變畫筆,但它始終顯示爲列表框背景(即,它從不顯示爲漸變畫筆)。你可以在silverlight中設置一個listboxitem背景的漸變畫筆嗎?

我已經能夠設置列表框的背景本身,我可以使用「setter」對象將listboxitem的背景設置爲標準顏色......但這些都不是我所追求的。

我真的想對每個項目的背景是一個漸變畫筆。

下面是我構建的數據模板。

<ListBox Name="MyListBox" Margin="12,67,12,169"> 

     <ListBox.ItemTemplate> 
     <DataTemplate> 
       <Grid Height="51" VerticalAlignment="Bottom"> 
        <Grid.Background> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FFC9F4D0"/> 
          <GradientStop Color="#FF2AC12A" Offset="0.333"/> 
          <GradientStop Color="#FF35DE35" Offset="1"/> 
         </LinearGradientBrush> 
        </Grid.Background> 
        <Canvas > 
         <dataInput:Label Width="227" Foreground="Yellow" Canvas.Left="158" Canvas.Top="8" Content="{Binding Place}"/> 
         <dataInput:Label Width="146" Foreground="Yellow" Canvas.Left="8" Canvas.Top="8" Content="{Binding Date}"/> 
         <dataInput:Label Content="{Binding People}" Width="346" FontSize="9.333" Foreground="Black" Canvas.Left="166" Canvas.Top="28"/> 
         <!-- <dataInput:Label Width="45" Content="Accept" Foreground="White" Canvas.Left="8" Canvas.Top="28"/> 
         <dataInput:Label Width="45" Content="Decline" Foreground="White" Canvas.Left="57" Canvas.Top="28"/> --> 
         <dataInput:Label Content="SomeText" Width="101" FontSize="9.333" Foreground="White" Canvas.Left="389" Canvas.Top="10"/> 
         <Image Height="21" Width="21" Canvas.Left="500" Canvas.Top="8" Source="Green Button.png"/> 
        </Canvas> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

有什麼想法?

回答

2

什麼是你的數據模板發生:

電網的背景被設置爲你所需要的顏色。但是,在此網格上方,您的Canvas正在被繪製。因此線性漸變背景是不可見的。

如何解決此問題?

  1. 設置Canvas.Background = {}綁定
  2. 對於那些你希望繼承Grid.Background到,設置控件的背景畫布中不斷控制= {}綁定

樣品代碼:

< /Grid.ColumnDefinitions> - >

    <Canvas Background="{Binding}"> 

         <TextBox Width="227" Canvas.Left="158" Canvas.Top="8" Foreground="Yellow" Text="{Binding Name}" Background="{Binding}"/> 
         <TextBox Width="146" Canvas.Left="8" Canvas.Top="8" Foreground="Yellow" Text="{Binding Language}" Background="{Binding}"/> 

        </Canvas> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

希望這有助於!

0

你在做什麼是正確的它不設置你的ListBox的背景下,這臺只有你一個ListBoxItem的背景。我想你無法弄清楚。

要想出它只是給你的網格5的邊緣,然後see.What你在做什麼是正確的它不會設置你的列表框的背景,它只設置你的listboxitem的背景。我想你無法弄清楚。

弄明白只是給保證金到u [R 5格,然後看看。