DataTemplateSelector获取父ActualWidth

时间:2015-06-24 12:08:26

标签: wpf datatemplateselector actualwidth

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

由于它自定义的项也是一个关于DataTemplate使用的参数我想我最好的方法是使用DataTemplateSelector。

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

1 个答案:

答案 0 :(得分:0)

使用DataTemplateSelector时,您可以访问将DataTemplate应用于其中的数据项。来自MSDN上的DataTemplateSelector页:

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