LongListSelector忽略对其ItemTemplate的更改。在LongListSelector的DependencyProperty的定义是这样的:
public static readonly DependencyProperty ItemsTemplateProperty =
DependencyProperty.Register("ItemTemplate", typeof(DataTemplate),
typeof(LongListSelector),
new PropertyMetadata(null));
如果你想让它注意到变化,你可以获取源和重建它是这样的:
public static readonly DependencyProperty ItemsTemplateProperty =
DependencyProperty.Register("ItemTemplate", typeof(DataTemplate),
typeof(LongListSelector),
new PropertyMetadata(null,
OnItemsTemplateChanged));
private static void OnItemsTemplateChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
((LongListSelector)obj).OnItemsTemplateChanged();
}
private void OnItemsTemplateChanged()
{
_flattenedItems = null;
if (_isLoaded)
{
EnsureData();
}
}
你能解释,为什么你需要这个?如果您需要基于条件的模板,通常“DataTemplateSelector”是更好的选择。 –
silverlight没有'DataTemplateSelector',我知道有解决方法,但我不喜欢他们... – thumbmunkeys