Проблемы с меню ListBox - PullRequest
       4

Проблемы с меню ListBox

0 голосов
/ 05 марта 2012
private void MenuItemDelete_Click(object sender, RoutedEventArgs e) 
{             
    if (listBoxFiles.SelectedIndex == -1) 
    { 
        return; 
    } 

    //string filePath = (listBoxFiles.SelectedItem).ToString(); 
    int index = listBoxFiles.SelectedIndex; 
    listBoxFiles.Items.RemoveAt(index); 
} 

<ListBox Height="95" HorizontalAlignment="Left" Margin="78,35,0,0" Name="listBoxFiles" VerticalAlignment="Top" Width="323" Grid.ColumnSpan="2" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectionMode="Multiple" >
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">

                            <EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_DoubleClick" />
                        </Style>
                    </ListBox.ItemContainerStyle>
                    <ListBox.ContextMenu>
                        <ContextMenu>
                            <MenuItem Header="Delete File" Click="MenuItemDelete_Click"></MenuItem>
                        </ContextMenu>
                    </ListBox.ContextMenu>
                </ListBox>
  1. почему каждое нажатие на элемент в списке позволяет изменить его статус с выбранного (синий цвет) на невыбранный, и если файл выбран, и я нажимаю на пустое место в списке, файл остается выбранным?

  2. я реализую функцию, которая, если я нажимаю правую кнопку мыши на элементе в списке и в меню нажимаю Удалить элемент, удаленный из моего списка, но это происходит, только если файл не был выбран ранее, я имею в виду, если я нажимаю на элемент в списке, а затем щелкните правой кнопкой мыши и удалите файл, который упоминается в списке и не удаляется

1 Ответ

1 голос
/ 06 марта 2012

Всякий раз, когда вы выбираете элемент, щелкая левой кнопкой мыши, а затем щелкаете правой кнопкой мыши на том же элементе, он фактически отменяет выбор элемента.

Это спроектированное поведение, потому что у вас есть SelectionMode = "Multiple" в вашем списке, по умолчанию следующее:

  • Левый клик = Выбор элемента.
  • Щелкните правой кнопкой мыши = отмена выбора элемента.

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

Тогда у вас больше нет выбранного элемента, поэтому удаление ничего не удалит.

Чтобы решить эту проблему, просто установите SelectionMode = "Single", и теперь щелчок правой кнопкой мыши больше не будетотмените выбор элемента, и ваше удаление будет работать, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...