我想将数据绑定到LongListSelector的头模板。这是xaml代码
<toolkit:LongListSelector x:Name="_List" Background="Transparent" IsFlatList="True" ItemTemplate="{StaticResource SmallImageTemplate}"
ListHeaderTemplate="{StaticResource ListHeader}" ListFooterTemplate="{StaticResource EmptyListFooter}" />
并且在c#中我有:
_List.ItemsSource = ListOfItems;
但是我希望每种方案都有不同的标题,那么如何将数据绑定到模板标题?
答案 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;
}
}