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

Silverlight栅格:左侧应拉伸,右侧已定义,silverlight,xaml,grid,Silverlight,Xaml,Grid,我正在尝试为listitem模板创建一个网格。应该有三列,第二列和第三列的宽度都应该是50px,第一列应该拉伸,以填充剩余的空白空间 以下是我目前的代码: <DataTemplate x:key="NoteItemTemplate"> <Grid Background="{Binding ColorBrush}" Height="50" Margin="5,5,5,5" HorizontalAlignment="Stretch"> <Gr

我正在尝试为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*或*,则没有区别


但我似乎找不到答案。如何操作?

您提到要将上述网格定义用作ListBoxItem的数据模板。默认情况下,ListBoxItem的内容不会拉伸,因此在本例中,您将只看到两列

因此,我认为您需要指定,您希望拉伸ListBoxItem的内容。这样做:

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


1*
更改为
*
应该可以做到这一点。@Slugster:1*和*是否有在数据模板中写入的方法?或者它必须在列表框中吗?不,DataTemplate不是正确的位置,不可能这样做。您可以在中心资源字典中定义ItemContainerStyle的样式,并将其重新用于列表框