2008-08-24 5 views
3

내 프로젝트에 두 개의 Silverlight 컨트롤이 있고 TeamId 속성이 있습니다. 둘 다 사용자를 호스팅하는 컨트롤의 XAML에서 함께 이러한 결합하고자 유사 제어하는 ​​것입니다 : 내가 System.ComponentModel.INotifyPropertyChanged 구현 및 변경 TeamId 속성시하여 PropertyChanged 이벤트를 발생하고있어 첫 번째 컨트롤에서Silverlight에서 사용자 지정 특성 바인딩

 <agChat:UserTeams x:Name="oUserTeams" /> 
     <agChat:OnlineUser x:Name="oOnlineUsers" TeamId="{Binding ElementName=oUserTeams, Path=TeamId}" /> 

.

두 번째 컨트롤에서는 propdp 스 니펫을 사용하여 TeamId를 종속성 속성으로 식별했습니다. 실버 라이트 컨트롤이 처음 만들어 질 경우

 // Using a DependencyProperty as the backing store for TeamId. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty TeamIdProperty = 
     DependencyProperty.Register(
     "TeamId", 
     typeof(string), 
     typeof(OnlineUsers), 
     new System.Windows.PropertyMetadata(new System.Windows.PropertyChangedCallback(TeamChanged))); 

는 그러나, 나는 실버 라이트에서 후속 예외를 얻을 : 내가 잘못 뭘하는지

Unhandled Error in Silverlight 2 Application Invalid attribute value {Binding ElementName=oUserTeams, Path=TeamId} for property TeamId. [Line: 21 Position: 146] at System.Windows.Application.LoadComponent(Object component, Uri xamlUri) at agChat.Page.InitializeComponent() at agChat.Page..ctor() at agChat.App.Application_Startup(Object sender, StartupEventArgs e) at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName) 

어떤 아이디어? 분명히 이것은 모두 코드 숨김으로 수행 될 수 있지만이 은 올바른 접근 방식과 같이으로 보입니다.

답변

4

WPF에서는 올바른 방법이지만 Silverlight에서는 그렇지 않습니다.

Silverlight에서 xaml을 사용하여 요소에 바인딩 할 수 없습니다.

이것은 잘못된 라인 : TeamId = "{바인딩 ElementName을 = oUserTeams, 경로 = TeamId}"

Specificly ElementName을

당신이 할 수있는 경우에, 자원에 데이터 오브젝트를 배치하고 거기 선언, 그럼 당신은 이것을 할 수 있습니다 :

<agChat:UserTeams x:Name="oUserTeams" 
     DataContext="{StaticResource myDataObject}" /> 
<agChat:OnlineUser x:Name="oOnlineUsers" 
     DataContext="{StaticResource myDataObject}" 
     TeamId="{Binding TeamId}" /> 
+0

나는 오늘 이것을 만났다. 좋은 제안 주셔서 감사합니다! (SL3에서 요소 바인딩 지원 기대!) –

관련 문제