2

我正在尝试创建一个带有滚动条或 ScrollViewer 的 MenuItems 的菜单。我有很多项目要显示在菜单中,我只想显示其中的一些,让用户向下滚动查看其他项目。它看起来像一个 ListBox,但它在一个菜单内。我已经尝试将列表框添加到菜单中。有用; 但看起来很丑,而且有问题,所以我想我会用 MenuItems 重新做。我在互联网上没有发现任何重要的东西,所以我想我会问。我已经完成了一些代码;但它不起作用:

        <Menu>
            <MenuItem Width="80" Header="Test">
                    <MenuItem Header="Test2">
            </MenuItem>

            <Separator></Separator>
            <!--<ScrollViewer>-->
                <MenuItem Header="Test3">
                    <!--<ScrollBar></ScrollBar>-->
                        <MenuItem Header="Test4"></MenuItem>
                        <MenuItem Header="Test5"></MenuItem>
                        <MenuItem Header="Test6"></MenuItem>
                        <MenuItem Header="Test7"></MenuItem>
                </MenuItem>                        
             <!--</ScrollViewer>-->

            </MenuItem>
        </Menu>

滚动查看器和滚动条已被注释掉,但在取消注释时,在滚动查看器的情况下或在滚动条的菜单项顶部出现滚动条时出现错误。任何想法、文章、代码等将不胜感激。

4

1 回答 1

2
<Menu>
        <MenuItem Width="80" Header="Test">
            <MenuItem Header="A"/>
            <Separator></Separator>
            <MenuItem Header="B">
                <ScrollViewer VerticalScrollBarVisibility="Visible" Height="100">
                    <StackPanel>
                        <MenuItem Header="B1"></MenuItem>
                        <MenuItem Header="B2"></MenuItem>
                        <MenuItem Header="B3"></MenuItem>
                        <MenuItem Header="B4"></MenuItem>
                        <MenuItem Header="B5"></MenuItem>
                        <MenuItem Header="B6"></MenuItem>
                        <MenuItem Header="B7"></MenuItem>
                        <MenuItem Header="B8"></MenuItem>
                        <MenuItem Header="B9"></MenuItem>
                        <MenuItem Header="B10"></MenuItem>
                        <MenuItem Header="B11"></MenuItem>
                        <MenuItem Header="B12"></MenuItem>
                        <MenuItem Header="B13"></MenuItem>
                        <MenuItem Header="B14"></MenuItem>
                        <MenuItem Header="B15"></MenuItem>
                        <MenuItem Header="B16"></MenuItem>
                    </StackPanel>
                </ScrollViewer>
                </MenuItem>
                <MenuItem Header="C">
                <ScrollViewer VerticalScrollBarVisibility="Visible" Height="100">
                    <StackPanel>
                        <MenuItem Header="C1"></MenuItem>
                        <MenuItem Header="C2"></MenuItem>
                        <MenuItem Header="C3"></MenuItem>
                        <MenuItem Header="C4"></MenuItem>
                        <MenuItem Header="C5"></MenuItem>
                        <MenuItem Header="C6"></MenuItem>
                        <MenuItem Header="C7"></MenuItem>
                        <MenuItem Header="C8"></MenuItem>
                        <MenuItem Header="C9"></MenuItem>
                        <MenuItem Header="C10"></MenuItem>
                        <MenuItem Header="C11"></MenuItem>
                        <MenuItem Header="C12"></MenuItem>
                        <MenuItem Header="C13"></MenuItem>
                        <MenuItem Header="C14"></MenuItem>
                        <MenuItem Header="C15"></MenuItem>
                        <MenuItem Header="C16"></MenuItem>
                    </StackPanel>
                </ScrollViewer>
            </MenuItem>
            <MenuItem Header="D"/>
            <MenuItem Header="F"/>
            <MenuItem Header="G"/>
            <MenuItem Header="H"/>
            <MenuItem Header="I"/>
            <MenuItem Header="J"/>
            <MenuItem Header="K"/>

        </MenuItem>
    </Menu>

或者你可以在风格中设置一些东西......但是你必须知道你需要多少菜单项......所以我不太关心风格,因为它(至少这个)不适合一般使用。但也许这会给你其他想法或让你开始。

<Style x:Key="MenuWithScroll"  TargetType="{x:Type MenuItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <MenuItem Header="B">
                        <ScrollViewer VerticalScrollBarVisibility="Visible">
                            <StackPanel>
                                <MenuItem Header="{Binding title1}"/>
                                <MenuItem Header="{Binding title2}"/>
                                <MenuItem Header="{Binding title3}"/>
                                <MenuItem Header="{Binding title4}"/>
                                <MenuItem Header="{Binding title5}"/>
                            </StackPanel>
                        </ScrollViewer>
                    </MenuItem>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2013-05-23T21:13:48.447 回答