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);
                }
            }
        }
Пример #3
0
 public App()
 {
     MessageDispatcher = new MessageDispatcher(this);
     AddinManager      = new WpfAddinManager(this, @"addins\addins.xml");
     this.DispatcherUnhandledException += App_DispatcherUnhandledException;
 }