0

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

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

在 c# 中我有:

_List.ItemsSource = ListOfItems;

但我想为每个场景都有一个不同的标题,那么如何将数据绑定到模板标题?

4

1 回答 1

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;
    }
}
于 2011-11-02T12:29:57.807 回答