Equivalent Xaml en Code C#
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
Code:
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 |
Création dans le Xaml du style
Code:
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> |
Appel du CellTemplate du Xaml
Code:
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> |