2012-02-10 14 views
0

私は作成したユーザーコントロールがあります。 リストボックスのDataTemplate内で使用されます。 リストボックスは、観察可能なカスタムオブジェクトのコレクションにバインドされています。Silverlightでユーザーコントロールのプロパティをバインドする

バインディングを介して現在のオブジェクトを私のusercontrolに渡す方法が必要です。

public TypedMediaItem CurrentItem { get; set; } 

そして結合パラメータ設定:

:しかし、これは私に次のエラーを与える

<my:LargeStreamItemControl Height="160" Width="295" CurrentItem="{Binding }" /> 

は私のようなユーザーコントロール上のパブリックプロパティを作成しようとしました

タイプ 'System.Windows.Data.Binding'のオブジェクトを 'F1MediaCentre.Classes.Payload.Typed.TypedMediaItem'に変換することはできません。

どこが間違っているのかわかりません - 私はSilverlightには新しく、以前の同僚のライブプロダクションアプリケーションを継承していて、これで私の頭脳を磨いています。

答えて

3

私はこれを刺すでしょう...依存性のプロパティではないため、バインドできない可能性があります。

あなたの現在のCurrentItemの代わりに、ユーザーコントロールにこれを追加します。

Public Shared ReadOnly CurrentItemProperty As DependencyProperty = _ 
    DependencyProperty.Register("CurrentItem", GetType(TypedMediaItem), GetType(LargeStreamItemsControl), New PropertyMetadata(Nothing)) 
    Public Property CurrentItem() As TypedMediaItem 
     Get 
      Return DirectCast(GetValue(LargeStreamItemsControl.CurrentItemProperty), TypedMediaItem) 
     End Get 
     Set(value As TypedMediaItem) 
      SetValue(LargeStreamItemsControl.CurrentItemProperty, value) 
     End Set 
    End Property 

私は主にVBが...あなたがC#:)

に変換することができると思います申し訳ありません。これは、その依存関係になりますあなたはそれにバインドすることができます。

public static readonly DependencyProperty CurrentItemProperty = 
DependencyProperty.Register("CurrentItem", typeof(TypedMediaItem), typeof(LargeStreamItemsControl), new PropertyMetadata(null)); 
public TypedMediaItem CurrentItem 
{ 
    get { return (TypedMediaItem)GetValue(LargeStreamItemsControl.CurrentItemProperty); } 
    set { SetValue(LargeStreamItemsControl.CurrentItemProperty, value); } 
} 

はさて、ここではC#のです

関連する問題