Supponiamo che tu abbia
nel modello. Il numero intero è associato a un ComboBox nella vista.
D1) Come si associa l’array (oi singoli elementi dell’array) a un controllo DataGrid o ListView in modo che:
Ad esempio, se seleziono 5 nel ComboBox, sono visibili solo 5 righe contenenti 5 TextBox ciascuno associato ai primi 5 elementi dell’array.
D2) Come fornire un’altra colonna (solo informazioni di testo) a DataGrid / ListView in modo che:
Qualsiasi aiuto o suggerimento è molto apprezzato.
Grazie.
EDIT (22.11.2013):
Seguendo i suggerimenti di Sheridan collego questa domanda alla mia altra domanda che ha più informazioni (e contesto) a questa domanda.
Inizialmente ho aperto questa domanda perché pensavo che una domanda ridotta a qualsiasi contesto solo per la meccanica grezza avrebbe ottenuto una migliore comprensione e una migliore possibilità di risposta.
Sono corretto.
Ok, quindi se lo farai correttamente, dovrai prima creare un tipo di dati / class del modello per conservare i tuoi dati. Dovrebbe implementare correttamente l’ interfaccia INotifyPropertyChanged
e contenere una proprietà per ogni colonna che si desidera visualizzare nel DataGrid
inclusa una extra per il requisito ‘Q2’ .
Successivamente, si desidera aggiungere due proprietà di tipo ObservableCollection
nel codice dietro / visualizza modello. Il primo manterrà l’intera collezione e il secondo mostrerà solo il numero di righe che desideri. Avrai anche bisogno di una proprietà integer
per Bind
all’elemento selezionato del ComboBox
:
...
Ora, ogni volta che la proprietà SelectedItem
cambia nel modello di visualizzazione, è sufficiente aggiornare il numero di righe di elementi nella proprietà FilteredItems
:
public int SelectedItem { get { return selectedItem; } set { selectedItem = value; NotifyPropertyChanged("SelectedItem"); UpdateFilteredItems(); } } ... private void UpdateFilteredItems() { FilteredItems = new ObservableCollection(Items.Take(SelectedItem)); }
Nel metodo UpdateFilteredItems
, prendiamo semplicemente il numero rilevante di elementi dall’intera collezione di Items
base al valore SelectedItem
. Poiché la raccolta FilteredItems
è associata a DataGrid.ItemsSource
, l’interfaccia utente verrà automaticamente aggiornata.