11

WPFプロジェクトでは、この投稿で不満があるように、xamlでのみ使用される参照はCopyLocaltrueに設定されていてもbinフォルダーにコピーされません。MVVMパターンでは、サードパーティのコントロールがコードビハインド参照なしで使用されるのが一般的です。

この投稿に触発されて、私は以下の回避策を使用しています。簡単ですが、プロジェクト全体でXAMLファイルで実際に使用されている変数リストと同期して変数リストを手動で維持する必要があります。これらのファイルは常に変更される可能性があります。私の質問は、本当の解決策があるのか​​、それともより良い回避策があるのか​​ということです。(私は、ビルド後のスクリプトを使用するという考えを知っています。これは、IMHOが発見しにくく、変更に対してより脆弱です。)

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.");
        }
    }
}
4

2 に答える 2

8

私が使用する回避策は、アイテムにXAMLで定義された名前が付いていることを確認することです。これにより、生成されたコードビハインド(部分)クラスにインスタンスが作成されます。これは、参照追跡システムが参照を検出し、依存関係dllにコピーするのに十分です。

例えば:

<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}"
                           CheckedContent="Show My Items Only"
                           UncheckedContent="Show All Items"
                           x:Name="NameRequiredForCopyLocal">
于 2013-07-15T12:31:06.837 に答える
2

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

例えば:

// This is only for the build process, to copy target assembly to output.
private RadTreeView _TreeViewForCompiler;
于 2015-03-31T12:28:35.523 に答える