Wpf 如何获取GridViewColumn的实际宽度
我有以下XAML: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>
<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>