我正在尝试创建一个菜单,其中包含使用滚动条或ScrollViewer显示的MenuItem。我在菜单中显示了很多项目,我只想显示其中的一些项目,让用户向下滚动查看其他项目。它看起来像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>
滚动查看器和滚动条被注释掉,但是在取消注释它们时,滚动条的情况下会出现错误,滚动条的情况下,菜单项顶部会出现滚动条。任何想法,文章,代码等将不胜感激。
答案 0 :(得分: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>