Laden...

Delete-Button soll vorheriges Element (Label) im selbigen WrapPanel löschen

Letzter Beitrag vor einem Jahr 6 Posts 510 Views
Delete-Button soll vorheriges Element (Label) im selbigen WrapPanel löschen

Ausgangssituation:

Ich habe eine SQLite Datenbank, mit Objekten (Person), welche alle nur die Property "Name" haben.

Diese lasse ich mir in einem ItemsControl als Label untereinander ausgeben.

[Bsp.: Kevin           Button

Marvin        Button

Alfred         Button]

Fragestellung:

Wie kann ich mit dem Button_Click den jeweiligen Eintrag ansprechen bzw. dann aus der SQLite.db löschen?

XAML:

		<StackPanel>
      		<ItemsControl x:Name="PersonenListe">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <WrapPanel>
                            <Label FontWeight="Bold" Content="{Binding Name}" Width="300"/>
                            <Button Click="Delete_Click" Width="20" Height="20" Content="X"/>
                        </WrapPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </StackPanel>

Code-Behind:

public partial class MainWindow : Window
    {
        private readonly DBInput _dbInput = new DBInput();
        public MainWindow()
        {
            InitializeComponent();
            ShowPersons();
            
        }

        private void ShowPersons()
        {

            var Group1 = _dbInput.Persons.ToList();
            List<Person> personNameList = new List<Person>();
            foreach (var group in Group1)
            {
                personNameList.Add(new Person() { Name = group.Name });
            }

            PersonenListe.ItemsSource = personNameList;

        }

        private void Delete_Click(object sender, RoutedEventArgs e)
        {

			??????????????????????
        }
    }

Vielen Dank schon mal im Voraus.

LG

Hallo,
bin zwar kein WPF Entwickler, aber ggf. kannst du z.B. den PK als CommandParameter mitgeben.
Dann sollte dieser im Button Click Event verfügbar sein.
Ob es einen besseren Ansatz gibt, weiß ich leider nicht.
Ggf. kannst du auch im Command auf das Model zugreifen aber das fehlt mir leider der Ansatz.

Doku:
https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.primitives.buttonbase.commandparameter?view=windowsdesktop-7.0#system-windows-controls-primitives-buttonbase-commandparameter

Nachtrag:
Damit das funktioniert müsstest du aber ein richtiges Model binden.
Aktuell baust du dir nur eine Gruppen Liste auf.
Hier müsstest du aber die einzelnen Treffer als eigene Modelle binden, damit du auf die entsprechenden Daten zugreifen kannst.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

Danke schon mal für den Ansatz. Ich werd's einfach mal probieren!

Wieder ein Fall von: Ohne MVVM machst Du es dir unnötig schwer.

https://mycsharp.de/forum/threads/118261/artikel-mvvm-und-databinding

Nimm eine ObservableCollection, wirf da deine Objekte rein und binde sie als ItemsSource.
Dazu ein Command, den Du an den Button bindest und als CommandParameter bindest Du den aktuellen DataContext ("{Binding}").

In der Methode zum Command kannst Du dann einfach den Parameter casten, aus der ObservableCollection entfernen und der Rest passiert automatisch.
Ist auch eine Ecke weniger Code.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Ich hab nicht mal im Ansatz ein Plan, was du mit MVVM meinst ... bin wie gesagt noch ein Anfänger =)

Vielen Dank für die Unterstützung! Werd mir MVVM direkt mal reinziehen! 😄

Wenn Du dich mit WPF beschäftigst, sollte eigentlich kein Weg an MVVM vorbei führen.

Aber wenn Du noch so sehr Anfänger bist, solltest Du eher mit der Konsole anfangen.
WPF mag auf den ersten Blick zwar einfach wirken, aber an vielen Stellen gibt's dann doch Komplexitäten (wie z.B. MVVM), die einen Anfänger überfordern können.

Mit den Grundlagen, der OOP und den häufigen Sprach-Funktionen solltest Du mindestens sattelfest sein, bevor Du mit WPF startest.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.