如何在Windows Phone 7中禁用LongListSelector中的scrollview

时间:2014-12-30 05:24:29

标签: c# xaml windows-phone-7 longlistselector

我想在LongListSelector中禁用scrollview。

我试过这样:

<toolkit:LongListSelector x:Name="List_Contacts" 
                                      IsFlatList= "False"
                                      DisplayAllGroups="False"
                                      Margin="0,0,0,100" 
                                      Width="480" 
                                      Background="Transparent" 
                                      ItemsSource="{Binding ResultList}"
                                      ItemTemplate="{StaticResource ItemTemplate}" 
                                      GroupHeaderTemplate="{StaticResource GroupItemHeaderTemplate}"
                                              ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                                  ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                                      Tap="List_Contacts_Tap"/>

但是滚动没有禁用。

我从堆栈溢出中找到了一个解决方案

<Style x:Key="LongListSelectorWithNoScrollBarStyle" TargetType="toolkit:LongListSelector">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="phone:LongListSelector">
                        <Grid Background="{TemplateBinding Background}" d:DesignWidth="480" d:DesignHeight="800">
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="ScrollStates">
                                    <VisualStateGroup.Transitions>
                                        <VisualTransition GeneratedDuration="00:00:00.5"/>
                                    </VisualStateGroup.Transitions>
                                    <VisualState x:Name="Scrolling" />
                                    <VisualState x:Name="NotScrolling"/>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <Grid Margin="{TemplateBinding Padding}">
                                <ViewportControl x:Name="ViewportControl" 
                                                 HorizontalContentAlignment="Stretch" 
                                                 VerticalAlignment="Top"/>
                            </Grid>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

但在这里我收到错误

类型&#39; ViewportControl&#39;没找到。验证您是否缺少程序集引用,并且已构建所有引用的程序集。

我也将命名空间包含在xaml中。

的xmlns:ViewportControl =&#34; CLR-名称空间:System.Windows.Controls.Primitives;装配= System.Windows&#34;

但是现在我仍然收到'ViewportControl' was not found错误。

请帮我禁用LLS中的滚动。

Requirment

此处所有元素均可滚动.. LLS将包含N个项目。如果我将LLS滚动到顶部,则上面的堆栈面板也应滚动到顶部。

1 个答案:

答案 0 :(得分:0)

您可以通过将LongListSelector(LLS)的高度设置为高于所有项目的高度来禁用滚动。您可以为LLS设置最大高度以避免滚动。

在ScrollViewer中使用LLS不是一个好习惯,两个卷轴都会争夺他们的输入事件,结果也不会像预期的那样。

此外,为了更加关注您的问题,您可以将StackPanel添加到LLS的ListHeader,以便在滚动LLS时StackPanels也会与您的项目一起滚动。

使用ListHeader LLS的示例结构是

  <phone:LongListSelector>
    <phone:LongListSelector.ListHeader>
        <StackPanel>
            <StackPanel Name="Panel1"></StackPanel>
            <StackPanel Name="Panel2"></StackPanel>
        </StackPanel>
    </phone:LongListSelector.ListHeader>
  </phone:LongListSelector>