2011-06-20 13 views
4

パスに "/"記号を使用するタイミングは? 私は「/」は、我々はXMLで作業する場合にのみ使用していますが、今日の例を参照してくださいと思った:ウィンドウのWPFバインディング構文

class ViewModel 
{ 
    CollectionView Data {get;set;} 
} 

class BusinessObkect 
{ 
    string Name {get;set;} 
} 

のDataContextプロパティがViewModelにクラスのインスタンスに設定され、ViewModelにインスタンスのデータプロパティがでniitializedされますBusinessObjectオブジェクトのコレクション。

TextBoxインスタンスのTextプロパティ {Binding Path=Data/Name}が正常に動作しますが、Text = {Binding Path=Data.Name} - バインディングエラーの場合。

"。"の代わりに "/"を使用する必要がある場合は、バインディングのパス?

答えて

11

なぜthe documentationを聞かない:プロパティの

サブプロパティは、C#で使用されるものと同様の構文で指定することができます。たとえば、Path = ShoppingCart.Orderという節は、オブジェクトまたはプロパティSh​​oppingCartのサブプロパティOrderにバインディングを設定します。

源がcollection viewある場合、現在のアイテムは、スラッシュ(/)で指定することができます。たとえば、Path = /という節は、ビュー内の現在の項目へのバインディングを設定します。ソースがコレクションの場合、この構文はデフォルトのコレクションビューの現在の項目を指定します。

(Collectionビューリンクは便宜上追加)

それを取得と同じくらい簡潔かつ完全だこと。そのアイテムの1つのプロパティのコレクションに表記法を使用することは意味をなさない。例えばCollection.Dateであるのに対し、Collection/Dateでは実際にはコレクション自体にDateのプロパティがない限り

4

Dataがコレクションの場合に使用する必要があります。 /Dataコレクションの現在の要素をとり、Nameプロパティを返します。

+0

「[a]コレクションの現在の要素」とはどういう意味ですか?私がよく知っているコレクションタイプの中には、それ自身の中の現在のアイテムの概念がありません。 –

+0

この場合、彼は独自に 'CollectionView'を使用していますが、すでにそれがあります。 'ObservableCollection '(または類似のもの)を使用すると、WPFエンジンはそれを 'CollectionView'にラップして、このインフラストラクチャを提供します。 – Femaref

+0

ああ、大丈夫、知っておいてよかった。ありがとう。 –