2013-04-16 68 views
1

我有一個Listbox與一些Listboxitem的列表框,我想更改所有項目的樣式。我知道,可以在資源中創建樣式,並將這種樣式綁定到每個項目,但也許有可能更簡單(無需綁定)?用ListBox.ItemTemplate?更改列表框中的所有ListBoxItem(Windows Phone 8)的樣式

   <ListBox SelectionChanged="ListBox_SelectionChanged"> 
         <ListBoxItem x:Name="ItemAdress"> 
           .... 
         </ListBoxItem> 

         <ListBoxItem x:Name="ItemPhone"> 
           .... 
         </ListBoxItem> 

         <ListBoxItem x:Name="ItemEmail"> 
           .... 
         </ListBoxItem> 
       </Listbox> 

實際上,我的目標是爲每個項目添加Margin底部15。 (在項目之間增加一個空格)

回答

5

注意:這適用於WPF;不知道它是否也適用於Windows Phone。

您可以使用TargetType創建樣式。這將影響到所有ListBoxItem S代表這個特定的ListBox:

<ListBox Height="200" Width="200"> 
    <ListBox.Resources> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Margin" Value="0,0,0,15" /> 
    </Style> 
    </ListBox.Resources> 
    <ListBoxItem x:Name="ItemAdress"> 
    ABC 
    </ListBoxItem> 
    <ListBoxItem x:Name="ItemPhone"> 
    DEF 
    </ListBoxItem> 
    <ListBoxItem x:Name="ItemEmail"> 
    GHI 
    </ListBoxItem> 
</ListBox> 

如果你想樣式所有列表框,你可以在適當的父級別指定樣式ListBoxItems。

E.g.以下適用於此網格下所有ListBox的所有ListBoxItems的樣式。

<Grid> 
    <Grid.Resources> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Margin" Value="0,0,0,15" /> 
    </Style> 
    </Grid.Resources> 
    <ListBox x:Name="listBox1" Height="200" Width="200"> 
    ... 
    </ListBox> 
    <ListBox x:Name="listBox2" Height="200" Width="200"> 
    ... 
    </ListBox> 
</Grid> 
+0

謝謝。有用。與TargetType只有一點區別。 '