我在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)); …. …. ... }
<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>
这一切都运作良好.
解决方法
您是否尝试使用ObservableCollection而不是IObservableVector以及您找到的自定义实现?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。