Привязка данных к заголовку для LongListSelector (инструментарий) - PullRequest
0 голосов
/ 02 ноября 2011

Я хотел бы привязать данные к шаблону заголовка 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 голосов
/ 02 ноября 2011

Используйте 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;
    }
}
...