我有一个我创建的用户控件。 它在列表框的 DataTemplate 中使用。
列表框绑定(bind)到自定义对象的可观察集合。
我需要一种通过绑定(bind)将当前对象传递给我的用户控件的方法。
我试图在用户控件上创建一个公共(public)属性,如下所示:
public TypedMediaItem CurrentItem { get; set; }
并设置绑定(bind)参数:
<my:LargeStreamItemControl Height="160" Width="295" CurrentItem="{Binding }" />
但是,这给了我以下错误:
“System.Windows.Data.Binding”类型的对象无法转换为“F1MediaCentre.Classes.Payload.Typed.TypedMediaItem”类型。
我不确定我哪里出错了——我是 Silverlight 的新手,从一位前同事那里继承了一个现场制作应用程序,并且正在为这个应用程序绞尽脑汁。
最佳答案
我会对此进行尝试...您可能无法绑定(bind)到它,因为它不是依赖属性。
将此添加到您的用户控件以代替当前的 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# :)
这将使它成为一个依赖属性,因此您将能够绑定(bind)到它。
好的,这里是 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); }
}
关于silverlight - 在 Silverlight 中绑定(bind)用户控件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231510/