Le bonjour,
Dans le cadre d'une listview qui s'auto-peuple par un Dataset (ce qui marche ma fois très bien, ya quelques exemples ici même (dans ce forum)), j'aurai besoin de faire un EditBox (class sympathique qui permet de se mettre en mode édition dans un listview). Je précise que cette listview est une class qui hérite de Listview...
Le petit soucis que j'ai, c'est que que l'implémentation du style se fait dans le Xaml, je le voudrais dans la création de ma listview au moment ou je "crée" les colonnes, et donc pas la même coder dans le C# la partie celltemplate qu'on trouve aussid ans le Xaml.
Création des colonnes
Création dans le Xaml du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // On crée les colonnes GridView gv = new GridView(); for (int i = 0; i < this._DsResultatRequete.Tables[_LibelleTable].Columns.Count; i++) { GridViewColumn gc = new GridViewColumn(); gc.Header = this._DsResultatRequete.Tables[_LibelleTable].Columns[i].ColumnName; gc.DisplayMemberBinding = new Binding(this._DsResultatRequete.Tables[_LibelleTable].Columns[i].ColumnName); gv.Columns.Add(gc); } // On gère la ListView et Xaml en même temps. Binding bind = new Binding();//On bind les données a la DataTable this.View = (ViewBase)gv; this.DataContext = this._DsResultatRequete.Tables[_LibelleTable]; // Déclarer la source du binding this.SetBinding(ListView.ItemsSourceProperty, bind); // Attacher au contrôle
Appel du CellTemplate du Xaml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <Window.Resources> <Style x:Key="{x:Type l:EditBox}" TargetType="{x:Type l:EditBox}" > <Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type l:EditBox}"> <TextBlock x:Name="PART_TextBlockPart" Text="{Binding Path=Value,RelativeSource = {RelativeSource TemplatedParent}}"> </TextBlock> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <GridViewColumn.CellTemplate> <DataTemplate> <l:EditBox Height="25" Value="{Binding <mettre ici le nom de la colonne voulue>}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn>
Partager