2012-03-28 16 views
0

私はobservablecollectionメンバを持つviewmodelを持っています。usercontrolのデータコンテキストがnullです

私はこのコレクションにバインドするusercontrolを作成しました。のコレクションのすべてアイテムはユーザーコントロールコンストラクタになります。このコンストラクタでは、datacontextはnullです。それはなぜですか?

<ItemsControl ItemsSource="{Binding ListOfMyCustomType}"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <uc:Tile DataContext="{Binding Path=.}"></uc:Tile> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel /> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 

編集:
デバッグ出力にはBindingExpressionエラーはありません。

編集:マティアスが解決しよう
は、DataContextのはこの時点では使用できません。コントロールがロードされたとき、またはdatacontextが変更されたときに使用可能になります。いいぞ!

よろしく、

ミシェル

+0

私は制御電流Ie、デフォルトのDataContextを使用しますので、私もパス=を._ _binding削除することができますねコレクション内のアイテム。 –

+1

あなたのxamlは上手く見えます。コンストラクタの実行時にDataContextが設定されていないことをイメージできます。 UserControl.Loadedイベントにアタッチし、そこにDataContextを使用してみてください。 – MatthiasG

+1

さらに優れた方法:DataContextChangedイベントを使用します。 – MatthiasG

答えて

1

私はDataContextの属性とバインド式を削除します。あなたのユーザーコントロールは、ItemsControlがバインドされているコレクション内のどのアイテムでも、現在のアイテムのテンプレートにバインドされています。

次に、あなたのコントロールのLoadedイベントにあなたがそののDataContextにアクセスできるようにする必要があります

var dataContext = this.DataContext as YourCustomType; 
関連する問題