Wpf 有没有更简单/更好的方法来自动调整一列ListView内容的大小?

Wpf 有没有更简单/更好的方法来自动调整一列ListView内容的大小?,wpf,listview,listviewitem,autosize,Wpf,Listview,Listviewitem,Autosize,好的,对不起我的英语提前,这里是我需要的: 我在XAML(WPF)中得到了一个ListView,其中有项目,我需要的是项目的宽度等于ListView的宽度 到目前为止,我做到了: <ListView Name="lvFiles" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListView.View> <GridView> <GridViewColumn>

好的,对不起我的英语提前,这里是我需要的:

我在XAML(WPF)中得到了一个
ListView
,其中有项目,我需要的是项目的宽度等于
ListView
的宽度

到目前为止,我做到了:

<ListView Name="lvFiles" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
  <ListView.View>
    <GridView>
      <GridViewColumn>
        <GridViewColumn.CellTemplate>
            <DataTemplate>
                <Grid Width="{Binding ElementName="lvFiles", Path=ActualWidth}">
                    <!-- All the controls inside I need to present an item -->
                </Grid>
            </DataTemplate>
        </GridViewColumn.CellTemplate>
      </GridViewColumn>
    </GridView>
  </ListView.View>
</ListView>

它解决了剪辑问题,也解决了单列
ListViewItem
auto size的问题。但现在这似乎不是最简单的方法。是否存在这样的情况?

您没有使用标题,因此可以直接使用
ListView
,而无需使用
GridView
。至于宽度,不要调整内容宽度,而是调整
ListViewItem
宽度

下面是一个例子:

<Style x:Key="singleListViewItemStyle"
       BasedOn="{StaticResource {x:Type ListViewItem}}"
       TargetType="{x:Type ListViewItem}">
    <Setter Property="Width"
            Value="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type VirtualizingStackPanel}}}" />
</Style> 
这是我为你制作的一个演示项目的示例。您还可以看到我的其他控件


我希望这能有所帮助。

在这种情况下,我根本看不到我的fav控件或任何项目。ListView为空。@AgentFire使用Snoop查看哪里出错了。。。我可以告诉你它是这样工作的…@AgentFire检查演示项目的链接谢谢,你真的帮了我。
<Style x:Key="singleListViewItemStyle"
       BasedOn="{StaticResource {x:Type ListViewItem}}"
       TargetType="{x:Type ListViewItem}">
    <Setter Property="Width"
            Value="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type VirtualizingStackPanel}}}" />
</Style> 
<ListView Name="myListView"
          ItemContainerStyle="{StaticResource ResourceKey=singleListViewItemStyle}"
          ItemsSource="{Binding Path=MyItems}"
          SelectedItem="{Binding Path=MySelectedItem, Mode=TwoWay}"
          SelectionMode="Single">
    <ListView.ItemTemplate>
        <DataTemplate>
            <!--Your favorite controls-->
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>