Silverlight网格:左侧应拉伸,右侧定义

时间:2011-10-05 11:29:11

标签: silverlight xaml grid

我正在尝试为listitem模板制作网格。应该有三列,第二列和第三列各应为50px宽,第一列应该拉伸也填充剩余的空白空间。

到目前为止,这是我的代码:

<DataTemplate x:key="NoteItemTemplate">
 <Grid Background="{Binding ColorBrush}"
   Height="50"
   Margin="5,5,5,5"
   HorizontalAlignment="Stretch">

   <Grid.ColumnDefinitions>
    <ColumnDefinition Width="1*" />
    <ColumnDefinition Width="50" />
    <ColumnDefinition Width="50" />
   </Grid.ColumnDefinitions>
 </Grid>
</DataTemplate>

      <!-- far away, in an another file.. -->

 <ListBox
    x:Name="NotesListBox"
    VerticalContentAlignment="Stretch"
    HorizontalContentAlignment="Stretch"
    VerticalAlignment="Top"
    ItemsSource="{Binding NotesList}"
    ItemTemplate="{StaticResource NoteItemTemplate}"
    Background="AliceBlue" />

如果它是1 *或*,则没有区别。

但我似乎无法找到答案。你会怎么做?

1 个答案:

答案 0 :(得分:3)

您提到要将上面的Grid定义用作ListBoxItem的DataTemplate。默认情况下,ListBoxItem的内容不会被拉伸,因此在您的情况下,您只会看到2列。

所以我认为你需要指定,你想要拉伸ListBoxItem的内容。这样做:

<ListBox>
  <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
  </ListBox.ItemContainerStyle>
</ListBox>