我已经进行了全面搜索,尽管每个人似乎都遇到了这个问题,但找不到针对我特定问题的解决方法。
这是问题所在。 我想制作一个自定义的日历控件。为此,我用TextBlocks填充了ItemsControl,然后在其周围放置了一个滚动查看器。
但是由于某些原因,scrollviewer滚动条似乎被禁用,并且似乎无法识别出它已填充数据。
这是我的代码
<Grid>
<ScrollViewer>
<ItemsControl ItemsSource="{Binding CalendarDates}" Height="75">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="local:Calender">
<TextBlock Name="CalendarDate" FontSize="12" Text="{Binding}" TextAlignment="Right" VerticalAlignment="Top" Height="Auto"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</Grid>
这是我的MainWindow.xaml,在其中进行初始化
<Grid>
<!--Row Definitins -->
<Grid.RowDefinitions>
<RowDefinition Height = "Auto"/>
<RowDefinition Height = "*"/>
<RowDefinition Height = "Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
<localControl:Calender Grid.Column="1" Grid.Row="1"/>
</Grid>
代码可以很好地填充scrollviewer,但是就像我在上面说的那样,滚动条似乎被禁用了,即使当我硬编码它的大小时,它仍然不起作用!
我也已经尝试设置SccrollViewer.VerticalScrollBar = Visible,设置scrollviewer的高度,以及Stack Overflow上的十几个“修复”,但是在我的情况下它们都不起作用>
答案 0 :(得分:0)
我找到了答案... ItemsControl模板本身不允许使用滚动查看器。
我在本杂志的第38页上找到了答案。
https://dncmagazine.blob.core.windows.net/edition20/DNCMag-Issue20.pdf
我们需要按以下方式修改ItemsControl模板:
<ItemsControl.Template>
<ControlTemplate TargetType= "ItemsControl">
<ScrollViewer>
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>