Silverlight ItemsSource数据更改调用数据模板的重新创建

Silverlight ItemsSource数据更改调用数据模板的重新创建,silverlight,xaml,Silverlight,Xaml,我有一个DataForm,其中我为ItemTemplate指定了一个DataTemplate。ItemsSource绑定到ViewModel的列表属性。在从不列出属性更改的情况下,通过notify属性更改机制更新数据表单的ItemsSource 到目前为止,一切顺利。问题:每当列表属性数据发生更改时,也会重新创建模板。我知道这一点,因为我在模板中有一个自定义控件,所以我看到构造函数被触发了两次。第一次是在InitializeComponent调用期间,第二次是在使用服务中的数据填充列表时 这是正

我有一个DataForm,其中我为ItemTemplate指定了一个DataTemplate。ItemsSource绑定到ViewModel的列表属性。在从不列出属性更改的情况下,通过notify属性更改机制更新数据表单的ItemsSource

到目前为止,一切顺利。问题:每当列表属性数据发生更改时,也会重新创建模板。我知道这一点,因为我在模板中有一个自定义控件,所以我看到构造函数被触发了两次。第一次是在InitializeComponent调用期间,第二次是在使用服务中的数据填充列表时


这是正常的行为吗?

最后的结论是,每当ItemsSource被分配一个新的列表时,就会重新创建模板

您真正的问题是什么?你关心表现吗?很难给出真正的答案,因为这似乎不是一个真正的问题。问题是:当ItemsSource属性发生更改时,是否期望某个特定控件重新创建其整个模板?或者它是一个有控制的bug?逻辑上说它应该重新加载数据。如果整个列表都改变了,那么其中就有新的项目。ItemsControl不会将旧项与新项进行比较,它只是为新项创建一个新的数据模板。如果这会导致性能问题,则可以迭代列表中的项并更新已更改的值。这样,这些项就不会是新的,也不会导致重新创建数据模板。我问这个问题不是因为我有性能问题,我只是想知道这是否是每个模板控件的默认行为。如果你说是,那么回答这个问题,我会接受。