2012-02-10 5 views
0

나는 만든 usercontrol 있습니다. 목록 상자의 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'형식으로 변환 할 수 없습니다.

어디서 잘못 될지 확신 할 수 없습니다. 이전 동료의 라이브 프로덕션 응용 프로그램을 상속받은 실버 라이트에 익숙하지 않습니다.

답변

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 번호입니다

관련 문제