Горизонтальная ширина элемента ItemControl не должна превышать ширину элемента ItemControl - PullRequest
0 голосов
/ 28 декабря 2018

Я не могу понять, как заставить элемент itemControl активировать горизонтальную полосу прокрутки элемента управления item.Мой сценарий, когда есть только один элемент.Полоса прокрутки появляется, когда в itemSource присутствует несколько элементов.Но шаблон элемента построен таким образом, что каждый элемент достаточно длинный, чтобы простираться за пределы ширины родительского элемента.Я предполагаю, что мне нужно будет использовать Pixel в качестве прокрутки, но это не имеет значения.

<ItemsControl Grid.Row="1" ItemsSource="{Binding LAndUDataPoints[0].Models, Mode=OneWay}" HorizontalContentAlignment="Stretch" ItemTemplate="{StaticResource LAndUItemTemplate}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate >
            <VirtualizingStackPanel Orientation="Horizontal" ScrollUnit="Pixel" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

enter image description here

1 Ответ

0 голосов
/ 02 января 2019

ItemsControlListBox) выполняет умную прокрутку (переход к каждому элементу во время прокрутки), но с одним элементом он останется в начале первого элемента (полоса прокрутки не требуется, посколькувторой элемент за пределами видимого окна).

Если вы хотите более плавную прокрутку и сохранить виртуализацию, вы должны переключиться на использование TreeView, например:

<TreeView Grid.Row="1" ItemsSource="{Binding LAndUDataPoints[0].Models, Mode=OneWay}" HorizontalContentAlignment="Stretch" ItemTemplate="{StaticResource LAndUItemTemplate}">
    <TreeView .ItemsPanel>
        <ItemsPanelTemplate >
            <VirtualizingStackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </TreeView .ItemsPanel>
</TreeView >

В этом случае вы неScrollUnit="Pixel" на VirtualizingStackPanel.

...