【发布时间】:2018-01-19 08:56:11
【问题描述】:
我有一个 ListView,其中包含一个文本块和一个 ListView 作为数据模板。下面是我的代码。
<ListView x:Name="DoctorsList" Grid.Column="1" VerticalContentAlignment="Top">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding DoctorName}" HorizontalAlignment="Center"/>
<ListView ItemsSource="{Binding AppointmentDetails}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="2 2 0 0">
<TextBlock Text="{Binding PatientName}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在这里,我想在用户向下滚动时冻结列表顶部的医生姓名。现在,如果向下滚动,医生姓名将被隐藏。我的目标是如果用户向下滚动,只需滚动患者姓名。医生的名字必须在顶部冻结。这样用户就可以与各自的医生一起查看完整的患者名单,而不会感到困惑。请帮忙。
【问题讨论】:
-
您可以将 ListView 与患者一起设置为固定高度。但这可能看起来很丑。
-
也许您应该将数据转换成表格,其中医生是列标题。实际上,
ListView看起来像是一个奇怪的控制这个功能的选择。 -
@Marc 它将为每一列提供滚动条。是的,它看起来很丑,占用更多空间。
-
@MathivananKP 如果您不想更改整个布局,可以使用第三个 ListView,它只有医生。所以你有一个 ListView 只包含医生姓名和一个 ListView 只包含患者的 ListViews 作为孩子。
-
@Marc 尝试了另一种列表视图方法。它满足了我的要求。感谢您的帮助。
标签: wpf xaml listview datatemplate