0

メニューを次のように機能させたい: 内の項目のいずれかをクリックするとMenu、それがチェックされます。同じアイテムから別のアイテムを選択するとMenu、以前に選択したアイテムのチェックが外れ、新しく選択したアイテムがチェックされた状態で表示されます。

<DockPanel.Resources>
    <Style TargetType="{x:Type MenuItem}">
        <EventSetter Event="Click" Handler="Onfilter_Click" />
    </Style>
</DockPanel.Resources>

<Menu DockPanel.Dock="Top" >
    <MenuItem x:Name="filtermenu" Header="_FilterType" BorderBrush="White" >
        <MenuItem Header="ShowAll" IsChecked="True" />
        <MenuItem Header="FirstPage" />
        <MenuItem Header="Secondpage"  InputGestureText="Alt+F3" />
    </MenuItem>
</Menu>

上記のコードでは、アイテムをチェックおよびチェック解除する方法を処理しました。以下のメソッドを実行すると、すべてがuncheckedになります。

また、 を押すAlt+F3と、Secondpage MenuItem を処理する必要がありますが、処理された場合でも、Onfilter_Clickメソッドが呼び出されます。どうすればこれを達成できますか?

Private Sub Onfilter_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim b As MenuItem = TryCast(sender, MenuItem)

        If Not obj Is Nothing Then

            For i As Integer = 0 To filtermenu.Items.Count - 1

                Dim mni As System.Windows.Controls.MenuItem = DirectCast(filtermenu.Items(i), System.Windows.Controls.MenuItem)
                Dim s As String = mni.Header

                If Not s = b.Header Then
                    If mni.IsChecked Then
                        mni.IsChecked = False
                    End If
                Else
                    If Not mni.IsChecked Then
                        mni.IsChecked = True
                    End If
                End If
            Next
            ' b.IsChecked = True
            obj.FilterImages(b.Header)
        End If
    End Sub
4

0 に答える 0