Itemscontrol Scrollviewer无法使用数据

时间:2019-03-14 14:38:13

标签: wpf xaml scrollviewer

我已经进行了全面搜索,尽管每个人似乎都遇到了这个问题,但找不到针对我特定问题的解决方法。

这是问题所在。 我想制作一个自定义的日历控件。为此,我用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上的十几个“修复”,但是在我的情况下它们都不起作用

1 个答案:

答案 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>