Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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.

  • Autor

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.