Как указать, какой scrollviewer следует использовать - PullRequest
0 голосов
/ 08 апреля 2011

Рассмотрим следующий сценарий, представляющий список элементов с левой стороны и детали выбранного элемента с правой стороны:

<ScrollViewer Name="scroll1" >
    <DockPanel>
        <ScrollViewer  Name="scroll2" DockPanel.Dock="Left" >
            <Really Long List Box />
        </ScrollViewer>
        <Selected Item Details />           
    </DockPanel>
</ScrollViewer>

(В приведенном выше коде scroll2 всегда отключен.)

В некоторых случаях высота «Детали выбранного элемента» может превышать высоту окна.В этих случаях scroll1 должен быть включен.Но в большинстве случаев это не так.Единственный элемент управления больше, чем высота окна - это «Действительно длинный список», поэтому должен быть включен только scroll2.

Я знаю, что самый простой способ - это поместить scroll1 прямо над «Подробная информация о выбранном элементе» следующим образом:

<ScrollViewer  Name="scroll1"  >
    <Selected Item Details />      
</ScrollViewer>

Но это внутренняя структура, которая разделена на несколько элементов UserControls, а элемент управления scroll1 служит только в качестве фейсхолдера для дочерних элементов управления, поэтому я не могу его удалить.

Есть ли способ?включить только scroll2, когда в окне помещается «Сведения о выбранном элементе»?

1 Ответ

1 голос
/ 08 апреля 2011

Если вы не установили явно высоту и ширину прокрутки, тогда она будет принимать высоту и ширину родительского элемента.В этом случае, похоже, что scroll2 принимает высоту и ширину панели док-станции, поэтому прокрутка scroll2 не включена.Попробуйте установить высоту и ширину scroll2, и вы сможете прокрутить его.

...