将数据绑定到LongListSelector的Header(工具包)

时间:2011-11-02 08:22:52

标签: .net silverlight windows-phone-7 longlistselector

我想将数据绑定到LongListSelector的头模板。这是xaml代码

 <toolkit:LongListSelector  x:Name="_List"  Background="Transparent" IsFlatList="True"   ItemTemplate="{StaticResource SmallImageTemplate}"
            ListHeaderTemplate="{StaticResource ListHeader}" ListFooterTemplate="{StaticResource EmptyListFooter}"  />

并且在c#中我有:

_List.ItemsSource = ListOfItems;

但是我希望每种方案都有不同的标题,那么如何将数据绑定到模板标题?

1 个答案:

答案 0 :(得分:0)

使用DataTemplateSelector,根据绑定数据确定要使用的模板。

您也可以将此用于前几天提出的问题。

public class DataTemplateSelector : ContentControl
{
    public virtual DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        throw new NotImplementedException();
    }

    protected override void OnContentChanged(object oldContent, object newContent)
    {
        base.OnContentChanged(oldContent, newContent);

        ContentTemplate = SelectTemplate(newContent, this);
    }
}

然后根据数据选择一个模板。这是我的一个:

public class EventTemplateSelector : DataTemplateSelector
{
    public DataTemplate BreakTemplate
    {
        get;
        set;
    }

    public DataTemplate EventTemplate
    {
        get;
        set;
    }

    public DataTemplate DefaultTemplate
    {
        get;
        set;
    }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        if (item == null)
            return DefaultTemplate;

        // important stuff here
        var _event = item as ConferenceEvent;
        if (_event != null)
            return _event.IsBreak ? BreakTemplate : EventTemplate;
        else
            return DefaultTemplate;
    }
}