質問

MAFフレームワークを実装し、パイプラインとa

を送信するアドインを作成しました。
<!-- language-all: lang-cc -->
.

Plugin自体である私のホストへのUserControl

ホストに送信されるコントロールは以下のように書かれています、それはUserControlを実装し、追加の文字列プロパティを含みます:

Contract : public interface ITestSuiteUiContract : INativeHandleContract  
AddInViews : public class TestSuiteUi : UserControl
HostViews :  public abstract class AbstractTestSuiteUi : UserControl
.

ホストはAddinと要求されたUIをロードします。メソッドを呼び出すことができますが、AddIn UIオブジェクトをホストコンテナに表示することはできません。

ViewModel: TestSuiteUiContainer = _TestSuiteLoader.LoadedTestSuite.GetTestSuiteWpfUiObjects()[0];`  
View : `<ContentControl Content="{Binding TestSuiteUiContainer}"/> 
.

別ウィンドウに入れる場合 new Window { Content = TestSuiteUicontainer }.Show();

または穴プラグインビューを別のウィンドウに入れたとしても。

マイプラグインは、My Addin UIオブジェクトを含むすべてのUserControlオブジェクトを表示しています。

これは私のホストサイドのTestsuiteui契約

ビューアダプタ:

public TestSuiteUiContractToViewAdapter(TestSuiteUiContract contract)
{
    _contract = contract;
    _handle = new ContractHandle(_contract);
    string aqn = typeof(INativeHandleContract).AssemblyQualifiedName;
    INativeHandleContract inhc = (INativeHandleContract)SourceContract.QueryContract(aqn);
    FrameworkElement fe = (FrameworkElement)FrameworkElementAdapters.ContractToViewAdapter(inhc);
    this.Content = fe;
}
.

そしてここで私のaddinによって返されるリスト:

public List<AbstractTestSuiteUi> GetTestSuiteWpfUiObjects()
{
    var list = new List<AbstractTestSuiteUi>();
    for (int i = 0; i < SourceContract.GetTestSuiteWpfUiObjects().GetCount(); i++)
    {
        list.Add(Adapt.ToView<ITestSuiteUiContract, AbstractTestSuiteUi, TestSuiteUiContractToViewAdapter>(SourceContract.GetTestSuiteWpfUiObjects().GetItem(i)));
    }
    return list;
}
.

これは私の

に追加された方法です
TestSuiteUiViewTocontractAdapter:
    public override IContract QueryContract(string contractIdentifier)
    {
        if (contractIdentifier.Equals(typeof(INativeHandleContract).AssemblyQualifiedName))
        {
            return FrameworkElementAdapters.ViewToContractAdapter(this.SourceView);
        }
        return base.QueryContract(contractIdentifier);
    }

    [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    public IntPtr GetHandle()
    {
        return FrameworkElementAdapters.ViewToContractAdapter(this.SourceView).GetHandle();
    }
.

役に立ちましたか?

解決

誰かが同じ問題に直面している場合、これがMSDNフォーラムにある回答です。 http://social.msdn.microsoft.com/forums/vstudio / en-us/cd30e928-31c8-4352-b86a-c6bcd64a3192/addin-apperence -issuein-wpf?forum=wpf

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top