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 に答える