Wpf 如何获取GridViewColumn的实际宽度

Wpf 如何获取GridViewColumn的实际宽度,wpf,listview,wpf-controls,datatemplate,actualwidth,Wpf,Listview,Wpf Controls,Datatemplate,Actualwidth,我有以下XAML: <GridView x:Key="myGridView"> <GridViewColumn CellTemplate="{StaticResource myTemplate}" /> </GridView> <DataTemplate x:Key="myTemplate"> <ContentPresenter Content="{Binding}" /> </DateTemplate>

我有以下XAML:


<GridView x:Key="myGridView">
    <GridViewColumn CellTemplate="{StaticResource myTemplate}" />
</GridView>

<DataTemplate x:Key="myTemplate">
    <ContentPresenter Content="{Binding}" />
</DateTemplate>

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


如何从my
DataTemplate
中的
ContentPresenter
的父级
GridViewColumn
获取
Actual Width

GridView
的问题是在生成的控件层次结构中没有单元格作为可视元素的概念。为了使
ContentPresenter
与列一样宽,应将
ListViewItem
HorizontalContentAlignment
属性设置为
Stretch
。这样,
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>