none
In listBox Item einfügen RRS feed

  • Frage

  • Liebe Community,

    ich melde mich mal wieder mit einer Frage. Ich möchte in einem bestimmten Fall (s. Code) Daten in meine ListBox (listBox1) einfügen. Die ListBox verfügt allerdings über mehrere TextBlock-Elemente mit gebindeten Text-Inhalten.

    MainWindow.xaml.cs

    private void auftragsGenerator(object sender, EventArgs e)
    {
        int einsatzid = RandomNumber(1, 5);
        Auftrag a = null;
        MessageBox.Show("Einsatz-ID: " + einsatzid);
        foreach (var auftrag in Data.Auftraege)
        {
            MessageBox.Show("Einsatz-ID: " + einsatzid + "\nAuftrag-ID: " + auftrag.id);
            if (auftrag.id == einsatzid && auftrag.set != 1)
            {
                a = auftrag;
                listBox1.Items.Add(auftrag.id + " SW: " + auftrag.sw);
                Console.Beep(800, 800);
                a.set = 1;
                MessageBox.Show("Neuer Auftrag wurde vom Telefonisten eingetragen. (#" + einsatzid + ")");
            }
        }
    }

    MainWindow.xaml

    <Grid>
        <ListBox HorizontalAlignment="Left" Margin="12,12,0,38" Name="listBox1" Width="479" MouseDoubleClick="listBox1_MouseDoubleClick">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Border Margin="2" BorderBrush="Black" BorderThickness="1">
                            <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="12"  Text="{Binding a_sw}" />
                        </Border>
                        <StackPanel Grid.Column="1" Margin="5">
                            <StackPanel Orientation="Horizontal" TextBlock.FontWeight="Bold" >
                                <TextBlock Text="{Binding a_eo}" />
    
                            </StackPanel>
                            <TextBlock Text="{Binding a_set}" />
                            <TextBlock Text="{Binding a_id}" />
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

    Nun möchte ich in der Methode auftragsGenerator() (wenn alle Abfrage zustimmen) einen ListBox-Eintrag hinzufügen mit bestimmten Daten aus der Klasse Data.Auftraege. Da es sich nur um einen Eintrag handelt der hinzugefügt werden soll, kann ich ja nicht einfach listbox1.ItemSource = x machen, denn dann würde ja die gesamte Klasse Data.Auftraege geladen werden - oder?


    Wie kann ich das tun?


    Mit freundlichen Grüße, Nevco

    Donnerstag, 4. Februar 2016 10:56

Antworten

  • Hallo Nevco,

    die Lösung, die ich in Deiner anderen Diskussion DataGrid ItemsSource Inhalt begrenzen genannt habe, funktioniert ebenso für eine ListBox.

    Sollte der Inhalte von DataGrid und ListBox irgendwie "verschwägert" sein, sprich die Daten teilen, kannst Du die gleiche Auflistung verschiedenen filtern.

    Gruß Elmar

    • Als Antwort markiert Nevco Freitag, 19. Februar 2016 13:33
    Donnerstag, 4. Februar 2016 15:40
    Beantworter