Hallo liebe Community!
Ich zerbreche mir jetzt schon seit mehreren Tagen den Kopf über folgendes Problem. Ich habe eine WPF Anwendung programmiert in der sich eine ListBox befindet. Diese ListBox nutzt folgendes ItemTemplate:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="3,3,3,3">
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="25px" />
</Grid.RowDefinitions>
<TextBlock x:Name="Text" Text="{Binding browsergame}" FontSize="11" FontWeight="bold" Foreground="DarkBlue" Grid.Column="0" Grid.Row="0" />
<Button Click="Button_Login" VerticalAlignment="Center" Name="buttonLogin" Grid.Column="0" Grid.Row="1" Width="20" Height="20" HorizontalAlignment="Left">
<Image Source="../Images/login.png"/>
</Button>
<Button Click="Button_Delete" VerticalAlignment="Center" Name="buttonDelete" Grid.Column="0" Grid.Row="1" Width="20" Height="20" HorizontalAlignment="Right">
<Image Source="../Images/delete.png"/>
</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
Heißt auf gut dt. jedes ListBox Item hat 2 Buttons mit der Option Login und Löschen. Mein Problem ist jetzt, das ich nicht weiß wie ich feststellen soll, welcher Button geklickt wurde (Der Button in Item1 oder 2 oder 3...etc) da alle Button die gleiche Handle Funktion Button_Login oder Button_Delete aufrufen (sowie die gleiche Namensbezeichnung). Meine Idee war jetzt das man anhand des "selected Item" der Listbox den Index herrausfinden könnte, welches Item angesprochen ist, jedoch wenn ich gleich auf das Button eines Items drücke wird es nicht als "selected" makiert.
Mir will keine Lösung einfallen 🙁
MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber! 😁
Du könntest das klickevent des Listitems abfangen und dann quasie in Handarbeit selber rausfinden, über die Mauskoordinaten, welche Butten getrückt wurde. Das ist ja mit dem VisualTreeHelper sehr einfach.
Aber ich vermute mal, es gibt noch eine elegantere Lösung
Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!
Hmm nur wie könnt ich da rangehen? Wie gesgat das größte Problem ist das er das ListItem einfach nicht makiert wenn ich auf den Button drücke. Ich weiß partout nicht wie ich den ItemIndex vorher ermittle. Damals gabs imemr ne Funktion indexFromPoint() aber die gibts ja in WPF nicht -.-
MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber! 😁
Ok ich habe eine Lösung für das Problem gefunden 🙂
private void Button_Login(object sender, RoutedEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is ListBoxItem))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
int item = (int)bgListBox.ItemContainerGenerator.IndexFromContainer(dep);
Button clicked = (Button)sender;
MessageBox.Show("Button's name is: " + clicked.Name + " Index " + item.ToString());
} // Button_Login
Vllt hat noch jemmand so ein Problem und kann dies hier nutzen.
Es wird nichts weiter gemacht als das der Elementbaum durchlaufen wird bis man zu einem Type ListBoxItem gelangt. Dann nur noch den Index auslesen mit "bgListBox.ItemContainerGenerator.IndexFromContainer(dep)"
MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber! 😁