好的,对不起我的英语,在这里我需要的是:
我在 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>
但事实证明,当出现垂直滚动条时,ListView
项目会在右侧被剪裁。并且当所有项目的总高度超过ListView.ActualHeight
时出现,因此我需要用户绑定更复杂,因此更复杂。
另外,我的物品,虽然我花了几个小时来解决问题,我的物品有时被剪裁在右边,没有明显的原因。
所以我想出了这个:
<ListView Name="lvFiles" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.View>
<GridView>
<GridViewColumn Width="{Binding ElementName=lvFiles, Path=ActualWidth}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Decorator Width="{Binding RelativeSource={RelativeSource
Mode=FindAncestor, AncestorType=ListViewItem},
Path=ActualWidth}">
<Grid Margin="0,0,18,0">
<!-- All the controls inside... -->
</Grid>
</Decorator>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
它解决了剪辑问题,并且它解决了单柱ListViewItem
自动调整大小的问题。但现在它似乎不是最简单的方式。有没有这样的?
答案 0 :(得分:3)
您没有使用标题,因此您可以直接使用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>
如果您没有现有的样式定位ListViewItem
或者不想从中继承,则可以删除BasedOn="{StaticResource {x:Type ListViewItem}}"
。
AncestorType={x:Type VirtualizingStackPanel}
是因为默认情况下ListView
显示其内容。如果您有自己的ListView
主题,请参阅以下示例:
<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>
以下是我为您制作的演示项目的link。您还可以看到我的其他控件。
我希望这会有所帮助。