将滚动条添加到ItemsControl

时间:2016-03-15 07:46:52

标签: wpf data-binding xa

我有一个很长的列表来自我的业务逻辑,我需要在UI上显示。由于列表很长,我尝试添加Scrollviewer,但我无法滚动。

请找到下面的XAML代码

<Grid Margin="0,32,0,0">
                                                <TextBlock Text="{Binding IDC_WiFi, Source={StaticResource Resources}}" FontFamily="Segoe UI" FontSize="20" Foreground="#4cb5ab" HorizontalAlignment="Left" />
                                                <Button Command="{Binding HardwareWifiAccordionCommand}" BorderThickness="0" Width="16" HorizontalAlignment="Right" Height="16" >
                                                    <Button.Background>
                                                        <ImageBrush ImageSource="{Binding AccordionImageHardwareWifi}" />
                                                    </Button.Background>
                                                </Button>
                                            </Grid>
                                            <TextBlock Text="Klein's, Anil's" FontFamily="Segoe UI" FontSize="15" Foreground="#8fa3ad"/>
                                            <StackPanel  Height="200" Visibility="{Binding IsAccordionHardwareWifi, Converter={StaticResource Bool2Visible}}">
                                                <ScrollViewer VerticalScrollBarVisibility="Auto">
                                                    <ItemsControl ItemsSource="{Binding WifiList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
                                                        <ItemsControl.ItemTemplate>


                                                            <DataTemplate>

                                                                <StackPanel Margin="0,32,0,0">

                                                                    <Grid>
                                                                        <Image Source="/Images/Assets/da_wifi1_16x16.png" Height="16" Width="16" HorizontalAlignment="Left" />
                                                                        <TextBlock Margin="25,0,0,0" Text="{Binding NetworkName}" FontSize="15" Foreground="#FFFFFF" />
                                                                        <TextBlock Text="" FontSize="15" Foreground="#8fa3ad" HorizontalAlignment="Right" />
                                                                    </Grid>
                                                                    <TextBlock Text="" FontSize="15" Foreground="#8fa3ad" HorizontalAlignment="Left" />

                                                                </StackPanel>

                                                            </DataTemplate>
                                                        </ItemsControl.ItemTemplate>

                                                    </ItemsControl>
                                                </ScrollViewer>
                                            </StackPanel>

3 个答案:

答案 0 :(得分:0)

将其放入ScrollViewer

<ScrollViewer>
        <StackPanel >

        </StackPanel>
</ScrollViewer>

答案 1 :(得分:0)

正如@StepUp指出的那样你可以用ScrollViewer包装它,但我相信这会破坏虚拟化。当然,这超出了这个问题的范围,但要记住这一点。如果性能可能成为问题,那么我建议按照the answer to this question

中的说明实现

答案 2 :(得分:0)

scrollviewer需要设置高度

  @Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry bSE = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1);
        Fragment frag = getSupportFragmentManager().findFragmentByTag(bSE.getName());
        if (frag instanceof BackButtonBlocker)
        {
            BackButtonBlocker callback = (BackButtonBlocker) frag;
            callback.onBackPressed();
        }
        else {
            getSupportFragmentManager().popBackStack();
        }
    } else {
        super.onBackPressed();
    }
}