c# – 如何编写自定义依赖属性并将数据绑定到自定义类型?
发布时间:2020-12-15 21:54:22 所属栏目:百科 来源:网络整理
导读:我在winrt环境中有一个项目,我试图通过扩展它来扩展标准GridView控件的功能.目标是更改GridView的SelectedItems行为. public class myGridView : GridView{ /// summary /// My replacement of SelectedItems /// /summary public IObservableVectorobject a
我在winrt环境中有一个项目,我试图通过扩展它来扩展标准GridView控件的功能.目标是更改GridView的SelectedItems行为.
public class myGridView : GridView { /// <summary> /// My replacement of SelectedItems /// </summary> public IObservableVector<object> appItems { get { return GetValue(AppSelectedItemsProperty) as IObservableVector<object>; } set { SetValue(AppSelectedItemsProperty,value); appItems.VectorChanged += AppSelectedItemsChanged; } } /// <summary> /// Identifies the AppSelectedItems dependency property. /// </summary> public static readonly DependencyProperty AppSelectedItemsProperty = DependencyProperty.Register( "appItems",typeof(IObservableVector<object>),typeof(AppGridView),new PropertyMetadata(null,AppItemsPropertyCallback)); …. …. ... } 在我的XAML文件中,我有以下内容.. <xx ……. <appControls:AppGridView appItems="{Binding ContactsListSelectedItems,Mode=TwoWay } }"> .… … </appControls:AppGridView > ….. ……. /xx> 最后一段代码是我绑定到Datacontext的MVVM类. public class myModel: baseModel { …… …….. /// <summary> /// Not Working /// </summary> private IObservableVector<Contact> _ContactsListSelectedItems; public IObservableVector<Contact> ContactsListSelectedItems { get { return (IObservableVector<Contact>)_ContactsListSelectedItems; } set { SetProperty<IObservableVector<Contact>>(ref _ContactsListSelectedItems,value); } } …. …. } 我在这里找到了IObservableVector的实现:https://gist.github.com/runceel/2437074 绑定到ContactsListSelectedItems的数据不起作用,给出以下错误: Error: Cannot get 'ContactsListSelectedItems' value (type 'Object') from type 'Consius.ActiveWork.Pages.ContactPage.ContactPageViewModel,Consius.ActiveWork,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'. BindingExpression: Path='ContactsListSelectedItems' DataItem='Consius.ActiveWork.Pages.ContactPage.ContactPageViewModel,PublicKeyToken=null'; target element is 'Consius.ActiveWork.Controls.AppGridView' (Name='ContactsList'); target property is 'appItems' (type 'IObservableVector`1<Object>'). 如果我将ContactsListSelectedItems的类型更改为: IObservableVector<object> 这一切都运作良好. 对我来说这不是一个可接受的解决方案,使用类对象编写我的MVVM类. 有没有人可以给我一个提示什么是错的? 解决方法
您是否尝试使用ObservableCollection而不是IObservableVector以及您找到的自定义实现?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |