Как включить прокрутку для вложенных элементов управления, когда родительский элемент отключен? - PullRequest
1 голос
/ 06 октября 2010

У меня много вложенных элементов управления на панели, и я хочу отключить все из них, но оставить прокрутки включенными. По сути, я устанавливаю для свойства IsEnabled корневого элемента (панели) значение false, используя привязку. Но это также отключает прокрутку. Любые идеи (кроме добавления IsEnabled вместо каждого элемента управления)? Я использую MVVM.

Итак, в коде это выглядит так:

<Grid IsEnabled="{Binding IsControlEnabled}"> 
  <StackPanel>
    <.../>
    <CustomControl/>
    <.../>
  </StackPanel>
</Grid>

CustomControl также является сложным элементом управления и имеет, например, <ListBox> в <Scrollviewer>. И я хочу дать пользователю возможность прокручивать элементы в ListBox, когда IsControlEnabled == false.

Ответы [ 2 ]

0 голосов
/ 06 октября 2010

Вы можете добавить ScrollBar вне родительского элемента управления и синхронизировать обе полосы прокрутки. Проверьте этот проект для автоматической синхронизации прокрутки

alt text

0 голосов
/ 06 октября 2010

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

СМ. ПРИМЕР:

 <Grid x:Name="LayoutRoot"
      Background="White">
    <ScrollViewer Height="50">
        <Button IsEnabled="False"
                Height="100" />

    </ScrollViewer>
</Grid>

Благословения

Jeff

...