我正在尝试根据 Pages ActualWidth 将不同的 DataTemplates 设置为 ListBox。本质上,我想显示更多数据来填补空白。
由于它自己定义的项目也是使用什么 DataTemplate 的参数,我认为最好的方法是使用 DataTemplateSelector。
实现这一目标的最佳方法是什么,因为我找不到将 DependencyProperty 添加到 DataTemplateSelector 的方法。
我正在尝试根据 Pages ActualWidth 将不同的 DataTemplates 设置为 ListBox。本质上,我想显示更多数据来填补空白。
由于它自己定义的项目也是使用什么 DataTemplate 的参数,我认为最好的方法是使用 DataTemplateSelector。
实现这一目标的最佳方法是什么,因为我找不到将 DependencyProperty 添加到 DataTemplateSelector 的方法。
使用 时DataTemplateSelector
,您可以访问将DataTemplate
应用到它的数据项。从DataTemplateSelector
MSDN 上的页面:
public class TaskListDataTemplateSelector : DataTemplateSelector
{
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is Task)
{
Task taskitem = item as Task;
if (taskitem.Priority == 1)
return
element.FindResource("importantTaskTemplate") as DataTemplate;
else
return
element.FindResource("myTaskTemplate") as DataTemplate;
}
return null;
}
}
请注意object item
在上面的示例中,输入参数是如何转换为项目的实际类型的。因此,您可以向数据项类添加一个属性来保存大小信息,您可以使用这些信息来确定DataTemplate
要应用的内容。