在Popup中滚动ListBox

时间:2015-10-13 15:01:56

标签: c# wpf xaml listbox popup

我有那个布局:

0+

我遇到的问题是,当光标位于TextBlock和边框背景上方时,我可以滚动,但是当它位于ListBox项目之上时我不能。 ListBox显示没有滚动条的所有项目。 我希望整个ListBox表现为一个控件。

为什么滚动只能在ListBoxes之上工作?

2 个答案:

答案 0 :(得分:1)

如果滚动你的意思是鼠标滚轮,则它与ListBox中的Popup无关。这是因为ScrollViewerListBox默认模板的一部分。如果您想在其他位置处理滚动,则需要通过更改ScrollViewer

删除ListBox.Template
<ListBox>
    <ListBox.Template>
        <ControlTemplate TargetType="{x:Type ListBox}">
            <ItemsPresenter/>
        </ControlTemplate>
    </ListBox.Template>
</ListBox>

答案 1 :(得分:0)

ScrollViewerListBox都支持滚动。 您的Grid将允许其中的所有控件在分配给它的维度内尽可能多地扩展。在这种情况下,维度在功能上是无限的,因为Grid包含在ScrollViewer中。如果您希望ListBox滚动而不是完全展开,则需要在Grid上设置尺寸,或者摆脱ScrollViewer

尺寸设置:

<Popup>
    <Border>
        <ScrollViewer>
            <Grid Height="200" Width="200">
                <TextBlock/>
                <ListBox/>
                <TextBlock/>
                <ListBox/>
            </Grid>
        </ScrollViewer>
    </Border>
</Popup>

ScrollViewer

<Popup>
    <Border>
        <Grid>
            <TextBlock/>
            <ListBox/>
            <TextBlock/>
            <ListBox/>
        </Grid>
    </Border>
</Popup>