Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在弹出窗口中滚动列表框_C#_Wpf_Xaml_Listbox_Popup - Fatal编程技术网

C# 在弹出窗口中滚动列表框

C# 在弹出窗口中滚动列表框,c#,wpf,xaml,listbox,popup,C#,Wpf,Xaml,Listbox,Popup,我有这样的布局: <Popup> <Border> <ScrollViewer> <Grid> <TextBlock/> <ListBox/> <TextBlock/> <ListBox/> </G

我有这样的布局:

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

我的问题是,当光标位于文本块和边框背景上方时,我可以滚动,但当光标位于列表框项目上方时,我不能滚动。 列表框显示不带滚动条的所有项目。 我希望整个列表框作为一个控件


为什么滚动不能只在列表框上方工作?

这两个
ScrollViewer
ListBox
都支持滚动。 您的
网格
将允许网格中的所有控件在分配给它的维度内尽可能多地展开。在这种情况下,尺寸在功能上是无限的,因为
网格
被封装在
滚动查看器
中。如果希望
列表框
滚动而不完全展开,则需要在
网格
上设置尺寸,或者取消
滚动查看器

尺寸集:

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

如果滚动指的是鼠标滚轮,那么它与
列表框
处于
弹出窗口
中无关。这是因为
ScrollViewer
ListBox
默认模板的一部分。如果您想在其他地方处理滚动,您需要通过更改
ListBox.Template

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


当您在
列表框
上滚动时,您将滚动该
列表框
。我想你说的是鼠标滚轮滚动。你有winrt/universal或Windows phone项目而不是WPF吗?
<ListBox>
    <ListBox.Template>
        <ControlTemplate TargetType="{x:Type ListBox}">
            <ItemsPresenter/>
        </ControlTemplate>
    </ListBox.Template>
</ListBox>