我有一个我创建的用户控件。 它在列表框的DataTemplate中使用。 列表框绑定到可观察的自定义对象集合。
我需要一种方法通过绑定将当前对象传递给我的usercontrol。
我试图在用户控件上创建一个公共属性:
public TypedMediaItem CurrentItem { get; set; }
并设置绑定参数:
<my:LargeStreamItemControl Height="160" Width="295" CurrentItem="{Binding }" />
然而,这给了我以下错误:
“System.Windows.Data.Binding”类型的对象无法转换为“F1MediaCentre.Classes.Payload.Typed.TypedMediaItem”类型。
我不确定自己哪里出错了 - 我是Silverlight的新手,继承了一位前同事的现场制作应用程序,并且正在绞尽脑汁。
答案 0 :(得分: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#:)
这将使它成为依赖属性,因此您将能够绑定它。
好的,这是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); }
}