Itemscontrol Scrollviewer не работает с данными - PullRequest
0 голосов
/ 14 марта 2019

Я провел поиск по всему, и, хотя у всех, кажется, есть эта проблема, я не могу найти решение для своей конкретной проблемы ..

Вот проблема.Я хочу сделать собственный элемент управления календаря.Для этого я заполняю ItemsControl с помощью TextBlocks, а затем помещаю вокруг него средство просмотра прокрутки.

Но по какой-то причине полоса прокрутки средства просмотра прокрутки кажется отключенной, и кажется, что она не распознает, что она заполнена данными..

Вот мой код

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

Код просто отлично заполняет просмотрщик, но, как я уже сказалвыше полоса прокрутки кажется отключенной, и даже когда я жестко кодирую размер, она все равно не работает!

Также я уже пытался установить SccrollViewer.VerticalScrollBar = Visible и высоту scrollviewer, а также более десятка «исправлений» здесь, в переполнении стека, но ни одно из них не работает в моемслучай

1 Ответ

0 голосов
/ 19 марта 2019

Я нашел ответ ... Сам шаблон ItemsControl не допускает просмотрщик прокрутки.

Я нашел ответ в этом журнале на странице 38.

https://dncmagazine.blob.core.windows.net/edition20/DNCMag-Issue20.pdf

Нам нужно изменить шаблон ItemsControl следующим образом:

 <ItemsControl.Template>  
 <ControlTemplate TargetType=  "ItemsControl">    
 <ScrollViewer>      
 <ItemsPresenter/>    
 </ScrollViewer>  
 </ControlTemplate>
 </ItemsControl.Template>
...