这更像是一个一般性的问题。。。
我已经编写了一个用户控件(UserControl,而不是Custom control)。我在DataGridColumn中使用此控件来提供查找功能。。很像这样:
<DataGridTemplate ColumnHeader="Company">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<lookupCtl:LookUpCTL SelectedCompany="{Binding Company, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
CompanyChangedCommand="{Binding DataContext.CompanyChangedCmd, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我注意到,每当父/包含控件的dataconext发生更改时,就会调用LookUpCTL的构造函数。这是预期的行为吗?无论如何要防止这种情况发生?因为我不明白为什么这是必要的。。。我认为,控件的单个实例应该能够从数据上下文中刷新自己。
编辑:谷歌搜索没有提供任何明确的答案。。。但从我所读到的内容来看,问题可能出在数据网格上。由于我的控件是在数据网格中使用的,每次网格的itemsource发生变化时,它是否会销毁并重新创建控件?我这样做是有道理的,但不确定这是否是我看到的原因。假设是……当数据网格的项源发生变化时,有没有办法让数据网格重用用户控件的实例,而不是创建新的实例?