wpf listview проблема правого клика

поэтому я прикрепил контекстное меню (контекстное меню) к списку wpf.

к сожалению, когда вы щелкнете правой кнопкой мыши, появится меню иselects какой бы предмет вы не закончили Есть ли способ отключить это поведение при щелчке правой кнопкой мыши, но при этом разрешить контекстное меню?

Ответы на вопрос(2)

Решение Вопроса

сте. Как вы заметите, даже без ContextMenu щелчок правой кнопкой мыши на ListViewItem выберет этот элемент, и поэтому нам нужно установить событие для каждого элемента, а не для ListView.

<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 в ListView и, таким образом, позволяет открывать ContextMenu.

 KevinDeus02 июл. 2009 г., 18:51
да, это именно то, что мне нужно. Работает отлично. Благодарность

Ваш ответ на вопрос