禁用父级时如何启用嵌套控件的滚动?

时间:2010-10-06 12:34:23

标签: silverlight data-binding mvvm scroll scrollviewer

我在面板中有很多嵌套控件,我想要禁用所有这些控件,但是启用了滚动。基本上,我使用绑定将根元素(面板)的IsEnabled属性设置为false。但这也会禁用滚动。任何想法(除了向每个控件添加IsEnabled)?我正在使用MVVM。

所以,在代码中它看起来像这样:

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

CustomControl也是复杂的控件,例如<ListBox>中有<Scrollviewer>。 我的观点是,当ListBox时,用户可以在IsControlEnabled == false中滚动项目。

2 个答案:

答案 0 :(得分:0)

您可以在父Control之外添加ScrollBar并同步两个滚动条。查看this project for automatic Scroll Synchronization

alt text

答案 1 :(得分:-1)

如果要禁用包含每个都有滚动查看器的控件的父控件,这就是您的问题。您需要禁用每个控件,而不是更改父容器控件。

参见示例:

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

    </ScrollViewer>
</Grid>

祝福,

杰夫