Zum Inhalt springen

C# - ListView dynamisch erstellen und ändern in Folge von ListBox SelectedItem


fdres0

Empfohlene Beiträge

Hallo Community,

ich erstelle eine Listview mit ComboBox, TextBox, etc. die Inhalte werden an ein Dictionary gebunden. Bei Klick auf "+" Button wird ein neuer Eintrag und somit ein neues ListViewItem erzeugt.

Nun möchte ich, je nachdem was in der ComboBox ausgewählt wurde, die Visibility von den Objekten im ListViewItem ändern. Kann ich aber nicht, da ich keine Zugriff auf die Objekte habe. Kann mir da jemand weiterhelfen?


public partial class Page2 : Page

    {

        List<string> listArt = new List<string>();

        public Model.Bezahlung bezahlung = new Model.Bezahlung();


        public Page2()

        {

            listArt.Add("Stechkarte");

            listArt.Add("Bar");

            listArt.Add("Kostenstelle");

            listArt.Add("Gutschein");


            Resources["BezahlartenList"] = listArt;

            Resources["Bezahlungen"] = bezahlung.bezahlPositionDict;

            InitializeComponent();

        }


        private void btnArtHinzufügen_Click(object sender, RoutedEventArgs e)

        {

            AddBezahlart();

        }


        public void AddBezahlart()

        {

            string grund = "", bezahlart = "Stechkarte";

            int id = 0;

            double betrag = 0.0;


            bezahlung.AddBezahlPosition(bezahlart, id, betrag, grund);

            AbrechnungsLabelFüllen();

            listBezahlart.Items.Refresh();

        }


        private void Grid_Loaded(object sender, RoutedEventArgs e)

        {

            AddBezahlart();

        }


    }


<ListView ItemsSource="{DynamicResource Bezahlungen}"  Name="listBezahlart"  SelectionMode="Single" >

                    <ListView.View>

                        <GridView>

                            <GridViewColumn Header="Bezahlart"  >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <ComboBox  Name="cbBezahlart" SelectedItem="{Binding Value.Bezahlart, Mode=TwoWay}"   ItemsSource="{DynamicResource BezahlartenList}" SelectionChanged="cbBezahlart_SelectionChanged">


                                        </ComboBox>

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                            <GridViewColumn Header="ID" >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <TextBox Name="tbID" Text="{Binding Value.ID, Mode=TwoWay}" MaxLength="6" >


                                        </TextBox>

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                            <GridViewColumn Header="Betrag" >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <TextBox Name="tbBetrag" MinWidth="190" Text="{Binding Value.Betrag,Mode=TwoWay, StringFormat='{}{0:0.00}'}"  >


                                        </TextBox>

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                            <GridViewColumn Header="Grund" >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <TextBox Name="tbGrund"  Text="{Binding Value.Grund, Mode=TwoWay}" >


                                        </TextBox>

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                            <GridViewColumn Header="" >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <Button Name="btnArtHinzufügen" Content="+"  Click="btnArtHinzufügen_Click" />

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                            <GridViewColumn Header="" >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <Button Name="btnArtDelete" Content="-" Tag="{Binding Value.listId}"  Click="btnArtDelete_Click" />

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                        </GridView>

                    </ListView.View>

                </ListView>

post-92252-14430449840068_thumb.jpg

post-92252-14430449840525_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Du könntest versuchen, die Items in eine List hinzuzufügen und dann über ein foreach auf deren Eigenschaften zuzugreifen.

Ich habe so etwas mal für ComboBoxen gemacht, bei denen ich eine Eigenschaft ändern wollte (ich hatte mehrere ComboBoxen, bei denen ich die selbe Eigenschaft verändern wollte).

Du kannst also eine List machen, eine ListViewControls hinzufügen, die dann mit foreach durchlaufen und im foreach kannst Du ja mit if prüfen, ob Du für dieses Item die Eigenschaft ändern willst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bin mir nicht ganz sicher worauf du hinaus willst. Die Items (ComboBox, 3x TextBox und 2 Buttons) zu einer List hinzufügen und dann die einzelnen Listen untereinander anordnen?

Und dann:

foreach ( var item in list)

{

item.Visibility = hidden;

}

??

Das verwirrt mich gerade einwenig, bzw. ich habe das falsch aufgefasst..

Kannst du mir eventuell hier mal einen Denk-/Codeanstoß geben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...