Как отключить кнопки мыши в С# WPF?

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

Редактировать Когда я загружаю файл большого размера в свое приложение WPF Caliburn Micro, я изменил свойство IsEnabled Listbox на false, потому что я хочу отключить кнопку во время этого процесса. Затем, когда файл загружен, я изменил свойство IsEnabled Listbox на true. После этого каждое нажатие на отключенную кнопку вызывало события, а я этого не хотел. Я не знаю, как удалить эти события и где они хранятся, поэтому я подумал, что более простой способ решить эту проблему - отключить кнопки мыши во время загрузки файла. Но это тоже непросто... Заранее спасибо!


person El Matheo    schedule 27.01.2021    source источник
comment
Если это просто отдельное окно, вы можете отключить окно из кода. Не уверен, зачем вам это нужно, во время загрузки больших файлов вы можете просто запустить его как задачу переднего плана, чтобы заморозить программное обеспечение.   -  person Jay Mason    schedule 27.01.2021
comment
Возможно, вы захотите дополнить свой вопрос более подробной информацией. Также см.: stackoverflow.com/help/how-to-ask   -  person Nat Riddle    schedule 27.01.2021
comment
Спасибо, постараюсь в следующем посте. Это был мой первый.   -  person El Matheo    schedule 28.01.2021
comment
@Jay Mason Спасибо, я попробовал ваше решение. Перед началом загрузки файла я отключил окно. Когда файл был загружен, мне пришлось снова включить окно, и после этого каждое из событий, которые возникали во время загрузки файла, срабатывало и создавало много беспорядка в пользовательском интерфейсе. Если у вас есть другие решения, добро пожаловать.   -  person El Matheo    schedule 28.01.2021
comment
Я нашел решение в этом сообщении /вопросы/9527404/   -  person El Matheo    schedule 28.01.2021


Ответы (2)


Если вы хотите отключить только кнопки мыши, пользователь все равно может использовать клавиатуру. Значит, вам нужна другая техника. Вы можете добавить скрытый Gird с Opacity="0.5" в свое окно. Если вы хотите запретить пользователю использовать окно, просто вызовите visible the grid.

person Ribaz    schedule 27.01.2021
comment
Хорошая идея, хотя мой клиент не принял ее. - person El Matheo; 28.01.2021

Как насчет переопределения события SelectionChanged в ListBox и установки для него значения Handled = true при загрузке больших данных?

person zoolog    schedule 27.01.2021
comment
Я пытался реализовать ваше решение, но не могу. Не могли бы вы прислать пример, как переопределить событие в ViewModel и как использовать его в представлении? Заранее спасибо. - person El Matheo; 28.01.2021