2008-08-24 19 views
3

私のプロジェクトには2つのSilverlightコントロールがあり、どちらもプロパティTeamIdを持っています。最初の制御でSilverlightでのカスタム属性バインド

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

、私はSystem.ComponentModel.INotifyPropertyChangedを実装し、変更TeamIdの性質にPropertyChangedイベントを上げている:私は、両方のユーザーがに似制御ホスティングコントロールにXAMLで一緒にこれらをバインドしたいと思います。

2番目のコントロールでは、PropDpスニペットを使用してTeamIdを依存関係プロパティとして識別しました。 Silverlightのコントロールが最初に作成されたとき

 // 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))); 

はしかし、私は、Silverlightからフォロー例外を取得:私が間違ってやっている

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の要素バインディングサポートを楽しみにしています!) –