我是WPF的新手。我试图在具有标题的可滚动列表/网格中显示信息,并且不允许用户单击列表中的项目。此外,我需要在列表中的每个项目之间使用分隔符。
现在我正在使用HeaderedContentControl
并在ListView
中添加HeaderedContentControl.Content
。我似乎无法在不设置特定高度的情况下滚动ListView
,让控件能够调整大小会很好。
<UserControl ...>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<HeaderedContentControl Margin="10">
<HeaderedContentControl.Header>
<Label ... />
</HeaderedContentControl.Header>
<HeaderedContentControl.Content>
<ListView ItemsSource="{Binding Items}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Info1}" />
<TextBlock Text="{Binding Info2}" />
<Separator />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</HeaderedContentControl.Content>
</HeaderedContentControl>
</Grid>
</UserControl>
过去,如果我把它作为Grid的直接子项,我已经能够得到一个ListView滚动,但是这里没有把*的高度作为约束。
答案 0 :(得分:0)
您是否考虑过使用数据网格?根据您的描述,我创建了以下xaml并进行了测试,我相信它满足您的要求。
<DataGrid ItemsSource="{Binding Items}" HeadersVisibility="Column"
VerticalScrollBarVisibility="Auto" IsReadOnly="True"
CanUserSortColumns="False" AutoGenerateColumns="False"
IsHitTestVisible="True"
CanUserReorderColumns="False" Height="100"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Header1" Binding="{Binding Info1}"/>
<DataGridTextColumn Header="Header2" Binding="{Binding Info2}"/>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
必须在单元格样式和列标题样式中将IsHitTestVisible设置为false才能使滚动条仍然有效。
Datagrids拥有更多属性,您可以利用这些属性来获得您正在寻找的内容。