Я немного продолжил мое руководство по написанию расширений . Когда вы посмотрите на пример кода этого проекта, приведенный ниже код должен быть понятным.
Первый метод, указанный ниже, вызывается при изменении активного документа. Этот метод обрабатывает событие ActiveDocumentChanged IDocumentService . Сначала он получает содержимое TimelinePane из реестра палитры. В этом контенте живет ActiveSceneViewModel . ActiveSceneViewModel - это модель представления, которая содержит активную сцену (= текущий файл xaml, который редактируется). ActiveSceneViewModel содержит набор выбранных элементов, ElementSelectionSet. У которого есть событие (Изменено), которое запускается при его изменении. Обработайте это событие.
В этом обработчике событий у вас будет доступ к набору выбора сразу после его изменения.
private void ActiveDocumentChanged(object sender, DocumentChangedEventArgs e)
{
var timelinePane =
(TimelinePane)WindowService.PaletteRegistry["Designer_TimelinePane"].Content;
_activeSceneViewModel = timelinePane.ActiveSceneViewModel;
_activeSceneViewModel.ElementSelectionSet.Changed +=
new System.EventHandler(ElementSelectionSet_Changed);
//some other goes here....
}
void ElementSelectionSet_Changed(object sender, System.EventArgs e)
{
SceneElementSelectionSet selectionSet
= sender as SceneElementSelectionSet;
// get the selected elements from the selection set
}