2011-07-20 16 views
0

ObservableCollectionにバインドされたItemsSourceプロパティを持つItemsCountrolがあります。このタイプを表示するusercontrol(TeamUserControl)があります。私はitemsSourceコレクション内の各customtype項目のこのusercontrolをロードするデータ型を作成しました。この時点で、私がTeamUserControl内で作成するBindingステートメントは、パス{Binding Path = TeamOwner}で直接Teamプロパティを参照して作業することができます。 usercontrolが表すItemsSource項目への参照をバインドする方法はありますか?たとえば、TeamUserControlでは、Teamタイプの依存関係プロパティを作成し、それをItemsSourceのアイテムのインスタンスにバインドします。 のObservableCollectionチーム:この例では ItemsSourceコレクションのアイテムにDataTemplateコントロールのプロパティバインディングを設定しますか?

<ItemsControl Name="ItemCtrl" Grid.Row="0" ItemsSource="{Binding Path=League.Teams}"> 
     <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <mycontrols:TeamUserControl AttachedTeam="{Binding ???}" TeamOwnerName="{Binding Path=TeamOwner}"/> 
     </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

は、ウィンドウには、プロパティを持つクラス「リーグ」を表しています。 TeamOwnerというプロパティを持つ "Team"クラスがあります。 TeamUserControlには、Team型のAttachedTeamとString型のTeamOwnerNameの2つの依存関係プロパティがあります。

これらのユーザーコントロールのそれぞれにチームのインスタンスがあることを示すチームオーナープロパティリファレンスが含まれています。私はそれをどのように参照するか分かりません。

答えて

4

私はあなたを理解し、あなたはタイプTがいるあなたObservableCollection<T> League.Teams使用するタイプであるのItemsSourceに現在の項目にバインドします

<mycontrols:TeamUserControl AttachedTeam="{Binding}" TeamOwnerName="{Binding Path=TeamOwner}"/> 

{Binding}文を書くために必要があります。

また、ItemsControlについてMSDNの記事を読むことをお勧めします。Bindingを参照して、自分自身でバインドできるものを明確にしてください。

+0

これは私がそれがうまくいかなければならないと思った方法です。しかし、私は、TeamUserControlのソースタイプとターゲットタイプのTeamの間で変換しようとしているところで、バインディングエラーを取得します。そのエラーは、ItemsSourceがOC であるため、完全に混乱しています。私がItemsControl.ItemsTemplateを定義しなければ、私はちょうどクラス名 "Team"を取得します。私は各クラスのTeamオブジェクトについてこのTeamUserControl usercontrolを使用するように指示しようとしています。 – mminneman

+1

ええ、あなたは正しいです。私のTeamUserControlでは、デバッグ用にDataContextをDataContext = "{Binding RelativeSource = {RelativeSource Mode = Self}}"に設定していたことが判明しました。私はそれを削除し、すべてが良いです。ありがとう。 – mminneman

+0

@mminneman por favor! – stukselbax

関連する問題