none
wpf addin,system.addin.pipeline中缺少方法 RRS feed

  • 问题

  • 各位高手,我有一个问题。我在使用wpf做插件程序,使用的是maf框架。但是在使用system。addin。pipeline。的frameworkelementadapters这个方法时,vs报出来找不到这个方法。我已经引用了system.addin.pipeline这个类了啊。重装过。net4也还是没有用。请问怎么办
    2011年8月23日 3:08

答案

全部回复

  • FrameworkElementAdapters 不是方法,是个静态类,他里面提供了两个静态方法:

    Public methodStatic member ContractToViewAdapter Returns a FrameworkElement that has been converted from anINativeHandleContract.
    Public methodStatic member ViewToContractAdapter Returns an INativeHandleContract that has been converted from aFrameworkElement.

    所以,你是不是代码编写上吧 FrameworkElementAdapters 当作方法调用了。

    Sincerely,

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月23日 3:52
    版主
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    using System.AddIn.Contract;
    using System.AddIn.Pipeline;
    namespace Huang
    {
      [AddInAdapter]
      internal class ButtonViewToContractAddInAdapter : ContractBase,IFrameworkContract
      {
        private IButtonView view;
    
        public ButtonViewToContractAddInAdapter(IButtonView view)
        {
          this.view = view;
        }
        #region IFrameworkContract Members
        public INativeHandleContract GetButtons()
        {
          FrameworkElement fe = this.view.GetButtons();
          INativeHandleContract inhc=FrameworkElementAdapters .ViewToContractAdapter(view);
          return inhc;
        }
    
        #endregion
      }
    
    }
      

    这个是我的语句,但是就报错,当前上下文中不存在frameworkelementadapters。
    2011年8月23日 3:58
  • FrameworkElementAdapters.ViewToContractAdapter 接受的参数类型是 FrameworkElement 而你的 view 是一个实现了 IButtonView 接口的对象,请问是否这两者有关系。最好使用 FrameworkElement 类型对象或者妻子类对象。

    还有,这个可能不重要,我发现 FrameworkElementAdapters 和 ViewToContractAdapter 之间有个空格,你删掉试试看。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月23日 5:29
    版主
  • 我随意新建了一个类文件,添加了对 System.AddIn System.AddIn.Contract 和 System.Windows.Presentation 的引用。 然后自己写了个 IButtonView 接口,用你的代码,是完全可以的,并没有你的那个错误。

    我用VS2010 SP1 .Net 4 Client Profile,在 Win 7 SP1 下。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月23日 5:32
    版主
  • 我的环境和你是一样的。看了你的说明,我重新检查了下我的dll,

    好像是我的dll里就没有这个方法。但是我都重装过了。net4.请问你有什麽办法解决吗??

    2011年8月23日 5:38
  • 额, 我知道问题在哪了.

    FrameworkElementAdapters 是在 System.Windows.Presentation 程序集里的.你要添加这个 程序集,而不光是上面你图里的那两个:

     

     

    MSDN文档:

     

    FrameworkElementAdapters Class

     

    FrameworkElementAdapters is used by Windows Presentation Foundation (WPF) add-ins to convert between a FrameworkElement and an INativeHandleContract.

      Inheritance Hierarchy
    System.Object
      System.AddIn.Pipeline.FrameworkElementAdapters

     

    Namespace:  System.AddIn.Pipeline
    Assembly:  System.Windows.Presentation (in System.Windows.Presentation.dll)

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    • 已标记为答案 huangered 2011年8月23日 6:03
    2011年8月23日 5:51
    版主
  • 版主,你太厉害了。终于解决了。谢谢你了

    2011年8月23日 6:04