Entwickler-Ecke

WPF / Silverlight - Items in ItemControl durchnummerieren mit DataTemplate


MacWale - Mo 05.04.10 13:24
Titel: Items in ItemControl durchnummerieren mit DataTemplate
Hallo,

ich möchte Items in einem Itemcontrol durchnummerieren, bzw ich würde gerne den ListIndex + 1 auf dem Formular angezeigt haben. Ist das überhaupt möglich?


XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<GroupBox Header="{Binding Path=Bezeichnung}" Margin="5">
                                <ItemsControl   HorizontalContentAlignment="Stretch"  Margin="5"  DataContext="{Binding Path=Objekt}" ItemsSource="{Binding}"  >
                                    <ItemsControl.ItemTemplate >
                                        <DataTemplate >
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="20"></ColumnDefinition>
                                                    <ColumnDefinition Width="200"></ColumnDefinition>
                                                </Grid.ColumnDefinitions>
                                                <Label Grid.Column="0" Content="x."></Label>
                                                <TextBox Text="{Binding Path=Bezeichnung}" Grid.Column="1" Margin="1"></TextBox>
                                            </Grid>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </GroupBox>


Ich könnte mir vorstellen, dass das über einen Converter laufen muss, aber ich keinen Ansatz, wie ich das machen muss.

Vielen Dank schonmal für jeden Tipp.

Mfg
MacWale


Kha - Mo 05.04.10 14:02

:welcome:

Auf jeden Fall musst du deine Liste erst einmal indizieren, im einfachsten Fall also ein

C#-Quelltext
1:
.Select((i, x) => new KeyValuePair<int, T>(i + 1, x))                    

anhängen. Im Template kannst du dann

XML-Daten
1:
2:
<Label Grid.Column="0" Content="{Binding Key}"></Label>
<TextBox Text="{Binding Value.Bezeichnung}" Grid.Column="1" Margin="1">

benutzen.

Ob du diese Transformation nun in einen ValueConverter oder doch lieber in eine View-Model-Property steckst, bleibt dir überlassen :) .


MacWale - Mo 05.04.10 14:25

Danke!!

Manchmal ist die Lösung total easy, man kommt nur nicht drauf.

Gruß
MacWale

Ps: Frohe Ostern