質問

私は、WPFのリストビューにコンテキストメニュー(右クリックメニュー)に取り付けられています。

残念ながら、あなたは右クリックしたとき、それはあなたがオーバーしているのどんな項目メニューとの選択の両方が表示されます。まだコンテキストメニューを可能にしながら、この右クリックして選択動作を遮断する方法はありますか?

役に立ちましたか?

解決

キーが正しい場所でのPreviewMouseRightButtonDownイベントを設定しています。あなたものContextMenuなくて、わかりますように、右のListViewItemをクリックすると、その項目を選択して、私たちは、各項目ではなく、リストビューにイベントを設定する必要があります。

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <EventSetter Event="PreviewMouseRightButtonDown"
                         Handler="OnListViewItemPreviewMouseRightButtonDown" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Menu Item">Item 1</MenuItem>
            <MenuItem Header="Menu Item">Item 2</MenuItem>
        </ContextMenu>
    </ListView.ContextMenu>
    <ListViewItem>Item</ListViewItem>
    <ListViewItem>Item</ListViewItem>
    <ListViewItem>Item</ListViewItem>
    <ListViewItem>Item</ListViewItem>
    <ListViewItem>Item</ListViewItem>
    <ListViewItem>Item</ListViewItem>
</ListView>


private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    Trace.WriteLine("Preview MouseRightButtonDown");

    e.Handled = true;
}

プレビューイベントは、このからRightMouseButtonDownをブロックするのトンネリングあるので選択されているからそれらを防ぐListViewItemsに発生したが、リストビューにRightMouseButtonDownを防ぐことはできませんので、まだのContextMenuを開くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top