Scrollviewer дает проблемы при преобразовании панели стека в ItemsControl - PullRequest
1 голос
/ 16 марта 2012

При замене StackPanel на шаблон itemControl внезапно прокрутка перестала работать должным образом.

Старый:

 <ScrollViewer x:Name="HorizontalScroller"
            Grid.Column="1"
            VerticalScrollBarVisibility="Disabled"
            HorizontalScrollBarVisibility="Hidden"
            CanContentScroll="True" Margin="2.4,0,1.2,0">

            <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" 
                        ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="862.4"/>            
        </ScrollViewer>

Новое:

 <ScrollViewer x:Name="HorizontalScroller" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
            HorizontalScrollBarVisibility="Hidden" CanContentScroll="True" Margin="2.4,0,1.2,0" >

            <!---RegBtns verwijst naar de ObservableCollection die alle registration buttons bevat-->
            <ItemsControl Name="ItemControlRegistration" ItemsSource="{Binding ElementName=Window, Path=RegBtns}" Width="834.4">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                        <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" ScrollViewer.VerticalScrollBarVisibility="Disabled" 
                                    Width="834,4" />
                    </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>                       
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <!--template  custom style button: -->
                        <Button x:Name="RegistrationTestButton" Content="TEST" HorizontalAlignment="Left" Height="73" Width="151" 
                                Margin="10,0,5,0" Style="{DynamicResource ButtonStyleRegistration}" 
                                Click="RegistrationTestButton_Click">                              
                        </Button>
                    </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>             
        </ScrollViewer>

Проблема в том, что кнопка не отображается полностью. Это означает, что просмотр от 1-5 и нажатие вправо не показывает 2-6 напрямую. Другими словами, если я нажму вправо, я хочу сразу увидеть полную кнопку № 6. Теперь это в основном медленная прокрутка вправо (или влево), и части кнопки медленно появляются. Когда я нажимаю, я хочу, чтобы следующая кнопка мгновенно отображалась.

Что именно заставило эти резкие изменения произойти?

Привет.

1 Ответ

0 голосов
/ 16 марта 2012

Почему бы вам не поместить scrollViewer в шаблон ItemsControl?Я имею в виду что-то вроде следующего

<ItemsControl Name="ItemControlRegistration" ItemsSource="{Binding ElementName=Window, Path=RegBtns}" Width="834.4">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
             <ScrollViewer x:Name="HorizontalScroller" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
                  HorizontalScrollBarVisibility="Hidden" CanContentScroll="True" Margin="2.4,0,1.2,0" >
                    <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" ScrollViewer.VerticalScrollBarVisibility="Disabled" 
                                Width="834,4" />
              </ScrollViewer>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>                       
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <!--template  custom style button: -->
                    <Button x:Name="RegistrationTestButton" Content="TEST" HorizontalAlignment="Left" Height="73" Width="151" 
                            Margin="10,0,5,0" Style="{DynamicResource ButtonStyleRegistration}" 
                            Click="RegistrationTestButton_Click">                              
                    </Button>
                </DataTemplate>
                </ItemsControl.ItemTemplate>
</ItemsControl>             
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...