我的项目中有两个 Silverlight 控件,它们都有属性 TeamId。我想在托管两个用户控件的控件中的 XAML 中将它们绑定在一起,类似于:
<agChat:UserTeams x:Name="oUserTeams" />
<agChat:OnlineUser x:Name="oOnlineUsers" TeamId="{Binding ElementName=oUserTeams, Path=TeamId}" />
在第一个控件中,我正在实现 System.ComponentModel.INotifyPropertyChanged 并在 TeamId 属性更改时引发 PropertyChanged 事件。
在第二个控件中,我使用 propdp 片段将 TeamId 标识为 Dependency 属性。
// 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 控件时,我从 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)
任何想法我做错了什么?显然,这一切都可以在代码隐藏中完成,但这似乎是正确的方法。