这是一个更普遍的问题......我有一个我编写的用户控件(用户控件,而不是自定义控件)。我在 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 的构造函数。这是预期的行为吗?无论如何要防止这种情况?因为我不明白为什么这有必要......控件的单个实例应该能够从我认为的数据上下文中刷新自己。
编辑:谷歌搜索没有提供任何明确的答案......但从我读过的内容来看,问题可能是Datagrid。由于我的控件在数据网格中使用,每次网格的 itemsource 更改时,它会破坏并重新创建控件吗?我可以看到这样做的意义..但不确定这是否是我所看到的原因。假设它是......有没有办法让数据网格重用用户控件的实例,而不是在数据网格的 itemsource 更改时创建新实例?