【发布时间】:2011-11-30 21:33:27
【问题描述】:
我正在尝试创建一个布局,该布局使用ListBox 和看起来像标尺的自定义标题,但用于日期(具有明确的开始和结束日期)。目标是具有类似于DataGrid 的外观和感觉,除了列标题行将被我的DateTape 对象替换。当用户水平滚动时,DateTape 和 ListBox 都滚动,但是当用户垂直滚动时,只有 ListBox 滚动并且 DateTape 停留在顶部(如 DataGrid 中的列标题行)。
到目前为止,我能做的最好的事情如下:
<Window x:Class="ProjectNS.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:ProjectNS"
Title="MainWindow" Height="350" Width="600">
<Window.Resources>
<DataTemplate x:Key="itemTemplate">
<my:CustomRectangle HorizontalAlignment="Left" VerticalAlignment="Top" />
</DataTemplate>
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="File" />
</Menu>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<DockPanel>
<my:DateTape DockPanel.Dock="Top" VerticalAlignment="Top">
<my:DateTape.Dates>
<CalendarDateRange Start="10/4/2011" End="11/4/2011" />
</my:DateTape.Dates>
</my:DateTape>
<ListBox ItemTemplate="{StaticResource itemTemplate}" />
</DockPanel>
</ScrollViewer>
</DockPanel>
</Window>
我对这个解决方案的唯一问题是ListBox 的垂直滚动条位于控件的最右侧,这意味着用户必须水平滚动才能使滚动条出现。我需要始终可见的滚动条。
我尝试将DateTape 和ListBox 放入ScrollViewer,但随后在垂直滚动时DateTape 滚动出视图。
仅供参考 - 我的 CustomRectangle 对象是一个 UserControl,它允许用户实时调整水平位置和宽度,以根据需要根据 DateTape 定位它。
【问题讨论】:
标签: wpf datagrid listbox scroll