根据数据WP 8.1的不同列表框项样式
本文关键字:列表 样式 数据 WP | 更新日期: 2023-09-27 18:32:56
我有一个由项目填充的列表框。每个项目都包含一个对象,如下所示:
public Contact(int idContact, string pseudo, string prenom, string nom, string numero, bool isOuter)
{
this.IdContact = idContact;
this.Pseudo = pseudo;
this.Prenom = prenom;
this.Nom = nom;
this.NumerosTel = numero;
this.IsOuter = isOuter;
}
现在我想根据 IsOuter 值对这些项目应用不同的样式,因为它是一个布尔值。我听说过DataTemplateSelector,但无法真正弄清楚它是如何工作的。有人可以告诉我怎么做吗?
首先,创建一个如下所示的DataTemplateSelector
:
public class MyTemplateSelector : DataTemplateSelector {
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) {
var contact = (Contact)item;
if (contact.IsOuter == true) {
return (DataTemplate)Application.Current.Resources["DataTemplate1Name"];
} else {
return (DataTemplate)Application.Current.Resources["DataTemplate2Name"];
}
}
}
在此代码中,数据模板应位于 App.xaml 中。基本上,该方法必须返回您想要作为数据模板对象的 DataTemplate。你将如何得到那个对象完全取决于你。
其次,您需要像这样设置ListBox
的ItemTemplateSelector
:
listbox.ItemTemplateSelector = new MyTemplateSelector();
仅此而已。现在,不同的项将具有基于 IsOuter 属性的不同模板。
一些想法
您可能希望拥有一些更可重用的模板选择器。例如,您可能有一个具有一个 DataTemplate
属性的接口,在 SelectTemplateCore
中,检查该项是否实现了该接口,如果是 - 返回该属性的值。
无论如何,上面的代码现在应该可以工作,如果你将来需要更多DataTemplateSelector
,你会找到最方便的方式来编写/使用它们。 :)