0

我正在尝试根据 Pages ActualWidth 将不同的 DataTemplates 设置为 ListBox。本质上,我想显示更多数据来填补空白。

由于它自己定义的项目也是使用什么 DataTemplate 的参数,我认为最好的方法是使用 DataTemplateSelector。

实现这一目标的最佳方法是什么,因为我找不到将 DependencyProperty 添加到 DataTemplateSelector 的方法。

4

1 回答 1

0

使用 时DataTemplateSelector,您可以访问将DataTemplate应用到它的数据项。从DataTemplateSelectorMSDN 上的页面:

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要应用的内容。

于 2015-06-24T13:04:35.640 回答