Wpf-найдите элемент управления в headertemplate и отредактируйте его
Привет,
Я могу найти элемент управления в DataGridTemplateColumn объявленном в главном ресурсе
<DataGridTemplateColumn x:Key="rowRegroupement" MinWidth="140" Width="1*"> <DataGridTemplateColumn.HeaderTemplate> <DataTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Label x:Name="lblRegLib" Grid.Row="0" Content="{x:Static resx:resTabBord.lblAchatsBud}"/> <Rectangle Grid.Row="1" Fill="{StaticResource scbGrey2}" Margin="-7, 2" Height="1.5" /> <TextBox x:Name="txtRegLib" Grid.Row="2" Margin="2" Height="24" Visibility="{Binding ElementName=ucTabBord, Path=ModeAff, Converter={StaticResource BoolToVisibility}, ConverterParameter=true}"/> </Grid> </DataTemplate> </DataGridTemplateColumn.HeaderTemplate>
Подобный этому:
var colModel = (DataGridTemplateColumn)this.Resources["rowRegroupement"]; var tpl = colModel.HeaderTemplate.LoadContent(); // Instanciation du template pour pouvoir parcourir ses controls var ctrls = Classes.clsUtils.FindVisualChildren<Label>(tpl); foreach (var ctrl in ctrls) { ((Label)ctrl).Content = "TEST"; // KO }
Но если я хочу изменить свойство (например, содержимое), то это изменение не происходит.
Я думаю, это потому, что шаблон загружен LoadContent().
Но если я этого не сделаю, то не смогу найти элемент управления внутри шаблона.
У вас есть решение ?
Что я уже пробовал:
//ucDataGridColHead uc = ((ucDataGridColHead)ctrl); //uc.Title = Col.BddNomTable; // Ne fonctionne pas car les controls sont déjà mappés avec LoadContent(). //var lblTitre = uc.FindName("lblTitre"); //if (lblTitre != null) { ((System.Windows.Documents.Run)lblTitre).Text = Col.BddNomTable; } // Ne fonctionne pas car les controls sont déjà mappés avec LoadContent().