Laden...

Verweis auf das aktuelle Objekt in DataTemplate

Erstellt von DavidT vor 13 Jahren Letzter Beitrag vor 13 Jahren 829 Views
DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren
Verweis auf das aktuelle Objekt in DataTemplate

Hallo,

ich habe ein DataTemplate für eine ListBox erstellt in der sich für jedes Item ein Button befindet. Beim klick auf den Button möchte ich in der CodeBehind etwas machen, deshalb möchte ich die Referenz des aktuellen Objekts im Tag-Property des Buttons speichern. Nun ist normales Databinding kein Problem, aber wie wann ich auf das aktuelle Item binden?

Prinzip:


<ListBox Height="580" Name="listBox1" Width="460" ItemsSource="{Binding Items}" SelectionChanged="listBox1_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>           
                            <Button BorderThickness="0">
                                <Image Source="./Images/delete.png" Width="48" Height="48" Tag="{Binding this}"/>
                            </Button>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Der Punkt ist {Binding this}, wie genau komme ich an das aktuelle Element des Bindings?

Gruß David

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo DavidT,

anstatt des {Binding this} kannst du einfach {Binding} schreiben 😃

PS: Verwende besser Commands und gebe das aktuelle item im CommandParameter mit. Das ist besser als sich mit dem Tag zumzuplagen.

Zudem würde ich das Tag vom Button und nicht vom Image setzen.

Gruss
Michael

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren

Hey Michael,

super, vielen Dank für deine Tips! Natürlich sollte das in den Tag von Button, war grad beim Tippen etwas durcheinander 😉

Gruß David

5.742 Beiträge seit 2007
vor 13 Jahren

Verwende besser Commands und gebe das aktuelle item im CommandParameter mit.

Genau!

Wobei sich "{Binding}" (bzw. "{Binding Path=.}") auf den aktuellen DataContext bezieht.
Willst du tatsächlich den Button, musst du "{Binding Source={RelativeSource Self}, Path=.}" schreiben.