fdres0 Geschrieben 18. August 2014 Geschrieben 18. August 2014 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> Zitieren
from.hell Geschrieben 18. August 2014 Geschrieben 18. August 2014 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. Zitieren
fdres0 Geschrieben 20. August 2014 Autor Geschrieben 20. August 2014 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? Zitieren
Klotzkopp Geschrieben 20. August 2014 Geschrieben 20. August 2014 Binde die Visibility der Steuerelemente in XAML über einen passenden ValueConverter an Value.Bezahlart. Zitieren
fdres0 Geschrieben 21. August 2014 Autor Geschrieben 21. August 2014 Klasse funktioniert genau so, wie ich mir das vorgestellt habe!! Vielen Dank Zitieren
Empfohlene Beiträge
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.