private void Window_Loaded(object sender, RoutedEventArgs e) { App app = (App)Application.Current; WpfAddinManager am = (WpfAddinManager)app.AddinManager; IEnumerable <String> menuSubNames = am.GetSubNames("menu"); ItemsGroup group = null; Int32 i = 0; foreach (String subName in menuSubNames) { group = new ItemsGroup(ConvertName(subName)); group.Items = am.GetAddinInfos("menu", subName).ToArray(); AddinInfos.Add(group); i++; if (i == 3) { break; } } ItemsGroup miscGroup = new ItemsGroup("更多"); Collection <GroupContainerItem> subGroups = new Collection <GroupContainerItem>(); foreach (String subName in menuSubNames.Skip(3)) { foreach (AddinInfo addinInfo in am.GetAddinInfos("menu", subName)) { GroupContainerItem item = new GroupContainerItem(); item.Category = ConvertName(subName); item.Item = addinInfo; subGroups.Add(item); } } ICollectionView view = CollectionViewSource.GetDefaultView(subGroups); view.GroupDescriptions.Add(new PropertyGroupDescription("Category")); miscGroup.Items = view; AddinInfos.Add(miscGroup); }
private void ListBox_Click(object sender, RoutedEventArgs e) { ButtonBase btn = (ButtonBase)e.OriginalSource; if (btn == null) { return; } AddinActivatorBase activator = btn.Tag as AddinActivatorBase; if (activator == null) { AddinInfo info = btn.DataContext as AddinInfo; if (info == null) { return; } App app = (App)Application.Current; WpfAddinManager am = (WpfAddinManager)app.AddinManager; activator = am.GetAddinActivator((WpfAddinInfo)info); btn.Tag = activator; activator.Active(); if (activator.IsActived) { activator.Launch(); Addins.Children.Add(activator.View); } } else { if (activator.IsLaunched) { activator.Close(); Addins.Children.Remove(activator.View); } } }
public App() { MessageDispatcher = new MessageDispatcher(this); AddinManager = new WpfAddinManager(this, @"addins\addins.xml"); this.DispatcherUnhandledException += App_DispatcherUnhandledException; }