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