2011-12-27 7 views
0

私はこの結合している:私はバインドする必要がある50個のテキストボックスとラベルを持っている場合私のリソースファイルまたはWindow.ResourceタグでDataContextを定義する方法?

<Window x:Name="_local"> 

    <TextBox x:Name="txtVendorName" DataContext="{Binding ElementName=_this, Path=VendorObject}" Width="200" Height="50" BorderBrush="Black" Text="{Binding Path=VendorName}" /> 

は、私はすべてのためのDataContextを配置する必要があります?

このDataContextを一元化し、オブジェクトのText/Contentのみを定義する方法はありますか?

私はGridにDatContextを定義したくありません。では、私はどのように私のDataContextを定義できますか?

<Window.Resources></Window.Resources> 
+0

私たちはWindowタグでもDataContextを定義できることを知りました。しかし、私は別のリソースファイルで定義する方法を見つける必要がありますか? – usergaro

+0

あなたは別々のファイルにリソースディクショナリを定義し、Merge辞書機能を使ってメインのxamlファイルに統合することができます。 DataContextはseprateファイルで設定できます。ウェブ上のいくつかの例を探してください、それは簡単でなければなりません。 – Ujjwal

答えて

0

私はあなたの実際の要件の権利を推測していた場合は、その後、あなたが何をしたいすべての50枚のラベルとテキストブロックが_thisオブジェクトからVendorObjectあるデータコンテキストにバインドされなければならないです。私は実際にcouldntが何を_thisオブジェクトが推測する。

よくDataContextは、Inherited Dependency Property (IDP)です。ビジュアルな親がデータコンテキストで設定され、データコンテキストがそのビジュアルの下のすべての子によって取得されることを意味します。

Panelをあなたのウィンドウに入れ、バインディングDataContext="{Binding ElementName=_this, Path=VendorObject}"でそのデータコンテキストを1回設定し、それらの50-100のテキストブロックとラベルをそのパネルの下に置くと、そのベンダーオブジェクトが自動的にデータコンテキストとして取得されます。

ので

<StackPanel DataContext="{Binding ElementName=_this, Path=VendorObject}"> 
     <TextBlock Text="{Binding Path=VendorName}" /> 
     <TextBlock Text="{Binding Path=VendorId}" /> 
     <TextBlock Text="{Binding Path=VendorLocation}" /> 
     .... <!--Put all the 50 UI items here to use same data context --> 
    </StackPanel> 

私は私はあなたが必要なものを正確に推測願っています。さて、あなたは


を次の質問に答える

は、どのように私は私の中でのDataContext定義することができますか?あなたはカント

<Window.Resources></Window.Resources> 

。しかし、VendorObjectクラスのインスタンスを作成し、それにリソースKeyを与えることができますが、これは単に悪い設計です。

+0

ありがとうございますAngelWPF。それは本当に私を助けてくれました。 – usergaro

関連する問題