У меня есть WPF UserControl. Я хочу добавить этот пользовательский элемент управления в первый столбец каждой строки в DataGrid
. Я использовал DataTemplate
для достижения этой цели. Я добавляю новую строку, когда пользователь нажимает клавишу ВВОД в последней строке DataGrid. Organisation:OrganisationPicker
- это пользовательский элемент управления ниже.
<DataGridTemplateColumn Width="250" Header="{x:Static resx:Resources.Organisation}" x:Name="OrgPickerColumn" CellStyle="{StaticResource SingleClickEditing}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" Name="column1"></ColumnDefinition>
<!--<ColumnDefinition Width="0.1*"></ColumnDefinition>-->
</Grid.ColumnDefinitions>
<Organisation:OrganisationPicker Width="240"
HorizontalAlignment="Left" Margin="2,2,2,2"
Name="orgPicker"
VerticalAlignment="Top"
Grid.Column="0"
IsValidSearch="{Binding OrganisationError,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=true, NotifyOnValidationError=true,NotifyOnSourceUpdated=True}"
SelectedOrganisationalUnit="{Binding Path=ReqOrganisationId,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=true, NotifyOnValidationError=true,NotifyOnSourceUpdated=True}"
Foreground="{DynamicResource ContentForeground}" FontFamily="{DynamicResource DefaultFontFamily}" FontSize="{DynamicResource NormalFontSize}">
</Organisation:OrganisationPicker>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Пользовательский элемент управления добавляется, но при вводе новой строки конструктор пользовательского элемента управления вызывается столько раз, сколько строк в сетке , и, очевидно, я теряю состояние экземпляров пользовательского элемента управления, которые в уже имеющихся строках.
например. Если добавляемая новая строка является 5-й строкой сетки, конструктор вызывается 5 раз!
Почему это происходит? Как я могу предотвратить это?