我正在编写Expression Blend 4 Extension,我想在选择设计图面上的Control或Element时检测(在我的扩展名中)。有人能告诉我如何检测它吗?谢谢,蒂姆
答案 0 :(得分:0)
我继续my tutorial on writing extensions。当您查看此项目的示例代码时,下面的代码应该清楚。
更改活动文档时会调用以下第一种方法。此方法处理 IDocumentService 的 ActiveDocumentChanged 事件。首先,它从调色板注册表中获取 TimelinePane 的内容。在此内容中存在 ActiveSceneViewModel 。 ActiveSceneViewModel是包含活动场景(=正在编辑的当前xaml文件)的视图模型。 ActiveSceneViewModel包含一组选定的元素ElementSelectionSet。其中有一个事件(Changed)在更改时触发。处理此事件。
在此事件处理程序中,您可以在更改后直接访问选择集。
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
}