Это действительно зависит от того, где находится ваш код.
Я предполагаю, что он находится в модели представления - в этом случае у вас не будет доступа к FocusMangager
напрямую.Чтобы получить фокусированный элемент, вам нужно передать его функции через атрибут CommandParameter
.Это может быть сделано путем привязки, если существует только один возможный целевой объект.
Однако я могу себе представить, что это может быть не вариант, поскольку кнопка копирования на вашей ленте, скорее всего, обрабатывает несколько объектов.В этом случае я бы не использовал атрибуты Command
и CommandParameter
, а реализовал обработчик щелчка в коде.
Теперь у вас есть возможность определить фокусированный элемент или другой целевой объект, используя все функциональные возможности вида, включая FocusManager
.После того как вы определили цель, вы можете вызывать метод Execute
команды, передавая правильный объект в качестве параметра.
Прежде чем пытаться получить сфокусированный элемент, вы должны, однако, запросить метод CanExecute
, чтобы определить целевой объект, только если команда может быть выполнена.Если вы хотите включить / отключить кнопку копирования, основываясь на результатах метода CanExecute
, потребуется дополнительная работа.
Примечание: Этот пост предлагаетчто при использовании менеджера фокуса с DataGrid
.
могут возникнуть некоторые проблемы.