2011-03-28 12 views
3

Visual Studio 2010ビジュアルデザイナでは、デザイン時に外部XMLファイルを介してデータを読み込むことができますか?外部XMLファイルからのデザインタイムデータ

私はd:DataContext経由で追加できるようですが、データが大量にあり、XML経由でロードする方が簡単です。これは可能ですか?

+0

「d:DataContext」と「XML経由で読み込む」の違いは何ですか? d:DataContextはXMLをロードするので、探している他の用途や機能がありますか? –

+0

私のXMLは、私のリポジトリへの呼び出しによってロードされるので、私のdatacontextはそのリポジトリと同じです。このため、XMLに設定することはできません。 – kevindaub

答えて

2

実行可能な作業の1つは、実行時に使用するリポジトリ(または他のオブジェクト)の設計時バージョンを作成することです。私が定期的に使用する簡単なアプローチはそうです。 App.xamlで

<Application ...> 
    <Application.Resources> 
    <local:MyClass x:key="DesignData"/> 
    </Application.Resources> 
</Application> 

は、あなたのクラスのコンストラクタに、あなたがデザインモードであることを検出することができますし、それに応じてデータを移入:

public class MyClass 
{ 
    public MyClass() 
    { 
    bool isInDesign = DesignerProperties.GetIsInDesignMode(new DependencyObject()); 
    if (isInDesign) 
    { 
     // Load your XML + other setup routines. 
    } 

    // Normal ctor code. 
    } 
} 

を最後に、このアイテムを使用すると、そのあなたのコンテキストとしてのデータ。

<Window ...> 
    <Grid d:DataContext="{StaticResource DesignData}"> 
    ... 
    </Grid> 
</Window> 

これはおそらく、複雑なデザインタイムデータを取得するための最も簡単な方法です。もちろん、非常に複雑なシナリオでは、 'MyClass'やその他のアプローチのサブクラスを使用する必要があるかもしれませんが、それを十分に処理できることは分かっているようです。個人的な経験から言えば、このアプローチを使用して、あなたが考えることができる任意のプログラム状態の設計データを作成できます。また、必要に応じてDBから実データを引き出すことさえできます。もちろん、アプリケーションの設計データを早期に考えるようになればなるほど、実際に機能させるのは簡単になります。

+0

それはまさに私がやったことです。私は最初に何の結果も見ていなかった。ありがとう。 – kevindaub

+0

デザイン時にXMLファイルをどのように読み込みますか?あなたはファイルをどこに置いていますか、デザイナーにそのファイルを見つける方法を教えてください。 – SelAromDotNet

+0

デザイナーは、クラスのインスタンスを構築するので、そこにロードします。上のコードブロックを参照してください。// XML +その他の設定ルーチンをロードしてください。 ?必要な古い場所からファイルを読み込むことができます。データベース、ファイルシステム、または埋め込みリソースに依存します。 –

関連する問題