0

我有以下 XAML:

<GridView x:Key="myGridView">
    <GridViewColumn CellTemplate="{StaticResource myTemplate}"/>
</GridView>
<DataTemplate x:Key="myTemplate">
    <ContentPresenter Content="{Binding}"/>
</DateTemplate>

当我使用它时,我希望 contentpresenter 具有与 GridViewColumn 相同的宽度。到目前为止,我已经尝试使用 RelativeSource 绑定,但我似乎根本无法获得 GridViewColumn。

我如何从我ActualWidth的父母GridViewColumn那里获得?ContentPresenterDataTemplate

4

1 回答 1

1

问题GridView是在生成的控件层次结构中没有单元格作为可视元素的概念。为了使您ContentPresenter的列宽,您应该将 to 的HorizontalContentAlignment属性设置ListViewItemStretch。这样,ContentPresenter将拉伸到可用宽度,即列的宽度。

这是一个示例 XAML,它说明了这一点:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   <Grid>
      <Grid.Resources>
         <DataTemplate x:Key="leftTemplate">
            <ContentPresenter HorizontalAlignment="Left" Content="{Binding}"/>
         </DataTemplate>
         <DataTemplate x:Key="rightTemplate">
            <ContentPresenter HorizontalAlignment="Right" Content="{Binding}"/>
         </DataTemplate>
         <GridView x:Key="myGridView">
            <GridViewColumn Width="150" CellTemplate="{StaticResource rightTemplate}" Header="Right"/>
            <GridViewColumn Width="150" CellTemplate="{StaticResource leftTemplate}" Header="Left"/>
         </GridView>
         <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
         </Style>
      </Grid.Resources>
      <ListView Margin="10" View="{StaticResource myGridView}">
         <ListViewItem Content="item 1"/>
         <ListViewItem Content="item 2"/>
         <ListViewItem Content="item 3"/>
         <ListViewItem Content="item 4"/>
         <ListViewItem Content="item 5"/>
      </ListView>
   </Grid>
</Page>
于 2010-01-25T23:34:43.197 回答