这个想法与普通的ItemTemplate相同,因为它不依赖于绑定数据上下文中的任何东西来运行.我希望功能保留在视图中(假设MVVM)
如果您必须为ItemsControl设计一种提供交替模板(我的意思是完整数据模板)的方法,您将如何实现这一目标?
解决方法 扩展ItemsControl并在PrepareContainerForItemOverrIDe覆盖中,您可以应用交替模板.protected overrIDe voID PrepareContainerForItemOverrIDe(DependencyObject element,object item) { if (!object.ReferenceEquals(element,item)) { ContentPresenter presenter = element as ContentPresenter; ContentControl control = null; if (presenter == null) { control = element as ContentControl; if (control == null) { return; } } DataTemplate itemTemplate = null; if ((this.ItemTemplate != null) && (this.displayMemberPath != null)) { throw new InvalIDOperationException("Cannot set ItemTemplate and displayMemberPath simultaneously"); } if (!(item is UIElement)) { if (this.ItemTemplate != null) { if(this.AlternateItemTemplate != null && ((alternationIndex % 2)) == 1) itemTemplate = this.AlternateItemTemplate; else itemTemplate = this.ItemTemplate; alternationIndex++; } } if (presenter != null) { if (itemTemplate != null) { presenter.Content = item; presenter.ContentTemplate = itemTemplate; } else { presenter.SetBinding(ContentControl.contentproperty,new Binding(this.displayMemberPath)); } } else { control.Content = item; control.ContentTemplate = itemTemplate; } } }
我使用alternationIndex的方式不是很准确,需要更改,但否则这应该有效.
总结以上是内存溢出为你收集整理的具有交替ItemTemplate的Silverlight ItemsControl全部内容,希望文章能够帮你解决具有交替ItemTemplate的Silverlight ItemsControl所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)