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
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
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
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.