2011-07-19 80 views

回答

11

年得到NestorArturo啓發,發現了邊界控制。

將ItemTemplate內容封裝在Border控件中並指定BorderThickness和BorderBrush是非常容易的。我這樣做,因爲它不需要在ItemTemplate中更改我的Grid。

邊界控制在這裏描述:http://www.silverlightshow.net/items/Using-the-Border-control-in-Silverlight-2-Beta-1-.aspx

下面你可以看到我是如何使用它:

<ListBox Background="White" ItemsSource="{Binding Mode=OneWay, Path=MyPath}" Name="listName" SelectionChanged="listName_SelectionChanged"> 
        <ListBox.ItemContainerStyle> 
         <Style TargetType="ListBoxItem"> 
          <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
         </Style> 
        </ListBox.ItemContainerStyle> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
here -->      <Border BorderThickness="0,10,0,10" BorderBrush="Black"> 
          <Grid Width="auto" HorizontalAlignment="Stretch" > 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="auto" /> 
            <ColumnDefinition Width="*" /> 
            <ColumnDefinition Width="48" /> 
           </Grid.ColumnDefinitions> 
           <TextBlock VerticalAlignment="Center" FontSize="36" FontWeight="Bold" Grid.Column="0" Foreground="Black" Text="{Binding Path=Title}" Name="title"/> 
           <TextBlock VerticalAlignment="Center" HorizontalAlignment="Right" Grid.Column="1" Foreground="Black" Text="{Binding Path=Location}" Name="location"/> 
           <Image VerticalAlignment="Center" Grid.Column="2" Width="48" Height="48" Source="ApplicationIcon.jpg"/> 
          </Grid> 
and here -->    </Border> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
8

您可以更改ListBoxItem模板,或者,更簡單的做法是改變你的ItemTemplate,您只需將ItemTemplate中添加一個分頻器如下:

<ListBox.ItemTemplate> 
    <DataTemplate> 
    <Grid> 
     <!-- your content goes here ... for example: --> 
     <TextBlock Text={Binding Path=InterestingThing}"/> 

     <!-- the divider --> 
     <Line X1="0" X2="200" Y1="0" Y2="0" 
      VerticalAlignment="Bottom"/> 
    </Grid> 
    </DataTemplate> 
</ListBox.ItemTemplate> 
+0

謝謝。我決定改用Border控件。 – Marmoy

+0

@videre - 標記爲答案?我的答案確實描述了正確的方法,即使您最終決定使用邊框 – ColinE

+0

我會將您的解決方案標記爲答案,但我決定使用邊框控制作爲分隔線,因爲我認爲它比您的建議更好。如果你說服我更好,我當然會選擇你的答案。 – Marmoy

相關問題