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 に答える