2012-04-29 3 views
10

WPFプロジェクトでは、がthis postに記載されている場合でも、xamlで使用される参照はbinフォルダにコピーされません。 MVVMパターンでは、コードビハインド参照を一切持たずに第三者コントロールを使用するのが一般的です。XAMLでのみ使用されているアセンブリはbinフォルダにコピーされません

this postに触発されていますが、以下の回避策を使用しています。ただし、プロジェクト全体でXAMLファイルで実際に使用されているものと同期して変数リストを手動で更新する必要があります。これらの変更は常に変更されます。私の質問は、本当の解決策があるか、より良い解決策があるかどうかです。 (私は私見はあまり発見可能なと変化に対してより脆弱にあるビルド後のスクリプトを使用してのアイデアを認識しています。)

internal static class BuildTricker 
{ 
    private static readonly RadTreeView radTreeView; 
    static BuildTricker() 
    { 
     // Set and get once to avoid compiler optimization. 
     radTreeView = null; 
     if (radTreeView != null) 
     { 
      throw new InvalidOperationException("This should never happen."); 
     } 
    } 
} 
+0

- それはGACにいた場合、あなたはこれを試みることができる - [](http://stackoverflow.com/a/8703079/417747 ) – NSGaga

+0

RadControlsに固有のものではなく、 ''タグは 'CopyLocal'プロパティの実装です。 –

答えて

7

私が使用してこの問題を回避するには、項目がで定義された名前を持つことを確認することですXAMLこれにより、生成されたコードの背後(部分)クラスにインスタンスが作成されます。これは、リファレンスを検出し、依存関係のDLLをコピーするためのリファレンス・フォロー・システムにとっては十分です。

例えば:

<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}" 
          CheckedContent="Show My Items Only" 
          UncheckedContent="Show All Items" 
          x:Name="NameRequiredForCopyLocal"> 
+0

私はバインディングマークアップに第三者の依存関係を使用していますが、明らかにそれはうまくいきません。 –

+1

これは私の問題をoxyplotで修正しました。ありがとうございました! –

+0

コントロールがコントロールテンプレートでのみ発生する場合、このソリューションが動作しないようです。 –

1

これは、XAML、コードの既知の問題です。 VisualStudioには、対応するDLLが使用されているため、XAMLコードの解析中に奇妙なことがあります。私の場合は、コードビハインドクラスまたはプロジェクト内の任意のクラスの特定のDLLから任意のオブジェクトの属性を作成するのに役立ちました。 (回避策)例えば

:RAD/Telerikだ

// This is only for the build process, to copy target assembly to output. 
private RadTreeView _TreeViewForCompiler; 
関連する問題