Visual Studio 2010/2012 WPF 设计器扩展

20

当我使用Blend 4/5时,我可以创建扩展程序来增强Blend WPF设计工具的功能,如下所示:

using System.ComponentModel.Composition;

using Microsoft.Expression.DesignModel.Metadata;
using Microsoft.Expression.Extensibility;
using Microsoft.Expression.Platform;
using Microsoft.Expression.WpfPlatform;

namespace Elysium.Extension
{
    [Export(typeof(IPackage))]
    public class Package : IPackage
    {
        private IServices _services;

        public void Load(IServices services)
        {
            _services = services;

            var platformService = _services.GetService<IPlatformService>();
            platformService.PlatformCreated += Register;
        }

        private void Register(object sender, PlatformEventArgs e)
        {
            var wpf = e.Platform as WpfPlatform;
            if (wpf != null)
            {
                wpf.Metadata.AddAssemblyGroupMapping(AssemblyGroup.ExtendedControls, "Elysium.Extension");
                wpf.InstanceBuilderFactory.Register(new CustomWindowInstanceBuilder());
            }
        }

        public void Unload()
        {
        }
    }
}

在这段代码中,我订阅了IPlatform服务,当它被更新时,我通过WPFPlatform对象注册了我的自定义WindowInstanceBuilder。

我如何在Visual Studio 2010/2012设计器中实现这一点?

谢谢。


你能详细解释一下这个扩展应该实现什么吗? - Alan
1
Visual Studio和Blend在WPF设计器中使用虚假窗口。我需要更改它的模板,但是我只能通过继承WindowInstanceBuilder类来实现,因为“虚假窗口”模板只能在WindowInstanceBuilder.InstantiateTargetType方法中更改。 - Aleksandr Vishnyakov
您可以在 Visual Studio 2010 中的 Windows 部分中选择 WPF 用户控件库。 - okenshield
我需要创建Visual Studio Designer扩展,而不是自定义用户控件。 - Aleksandr Vishnyakov
这些东西好用吗?http://msdn.microsoft.com/en-us/library/dd885119.aspx http://blogs.msdn.com/b/tilovell/archive/2012/10/04/wf4-vs-workflowdesigner-extensions-in-visual-studio-2012.aspx http://www.codeproject.com/Articles/75961/Building-extensions-for-Expression-Blend-4-using-M - okenshield
不,我需要为_Visual Studio_ WPF设计器构建扩展。在这个扩展中,我需要使用WPFPlatform类。 - Aleksandr Vishnyakov
1个回答

1

如果您需要有关Visual Studio可扩展性的一些提示,请参阅"Visual Studio 2010插件编写文章/教程?"。Visual Studio SDK可能包含您所需的信息。

如果这对您有用,您可以将其扩展到Visual Studio 2012。


2
不,Visual Studio SDK文档中没有关于Visual Studio Designer WPF平台可扩展性的信息。 - Aleksandr Vishnyakov
就像你所说的那样,似乎VS并不支持扩展WPF编辑器。我在SDK文档中搜索了一下,没有找到任何有关扩展此功能的信息或接口。我认为唯一的方法是在VS和WPF设计器之间实现自己的远程基础架构,因为正如你所说,编辑器窗口是一个“虚假窗口”,运行在它自己的AppDomain中。 - Hybos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接