【问题标题】:Binding a property of a user control in Silverlight在 Silverlight 中绑定用户控件的属性
【发布时间】:2012-02-10 16:51:36
【问题描述】:

我创建了一个用户控件。 在列表框的 DataTemplate 中使用。 列表框绑定到自定义对象的可观察集合。

我需要一种通过绑定将当前对象传递给我的用户控件的方法。

我试图在用户控件上创建一个公共属性,如下所示:

public TypedMediaItem CurrentItem { get; set; }

并设置绑定参数:

<my:LargeStreamItemControl Height="160" Width="295" CurrentItem="{Binding }" />

但是这给了我以下错误:

“System.Windows.Data.Binding”类型的对象无法转换为“F1MediaCentre.Classes.Payload.Typed.TypedMediaItem”类型。

我不确定我哪里出错了 - 我是 Silverlight 的新手,从一位前同事那里继承了一个现场制作应用程序,并且正在为这个应用程序绞尽脑汁。

【问题讨论】:

    标签: silverlight data-binding mvvm


    【解决方案1】:

    我将对此进行尝试...您可能无法绑定到它,因为它不是依赖属性。

    将其添加到您的用户控件中以代替您当前的 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); }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2011-07-09
      • 2010-12-20
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      相关资源
      最近更新 更多