Domanda

Ho giocato in giro con il controllo WPF GridView (DesktopUI non Silverlight) e ho bisogno di essere in grado di selezionare una riga specifica e solo avere i dati per quella riga restituita per la visualizzazione all'interno di un nuovo controllo ad esempio una casella di riepilogo.

Inoltre, una volta che i dati di una riga è stata selezionata la possibilità di selezionare o aggiungere dati aggiuntivi alle mie esigenze listbox essere disabilitato. Il caso d'uso è che un utente può selezionare una sola riga / record da esportare o pubblicare.

In guardando attraverso alcuni dei campioni Telerik ho visto un paio di esempi simili ma niente che pienamente supportato questo caso d'uso.

Qualcuno ha esperienza a avuto con questi controlli e per sapere se questo può questo essere realizzato all'interno di un WPF GridView. Non ho avuto molta fortuna con la loro documentazione e ho cercato di utilizzare alcune delle eredita caratteristiche come la proprietà GridViewSelectColumn (che genera una casella di controllo in una colonna, ma non ho avuto alcuna fortuna invocare comandi quando si seleziona una casella di controllo / controllato ). Invece della casella di controllo dovrei cercare di utilizzare un pulsante e aggiungere che come sola colonna di supporto che l'utente può cliccare come ad esempio:              
   

Se chiunque può fornire un esempio di codice di come richiamare la selezione di una riga di dati, nonché come disattivare il seletion di righe aggiuntive volta una singola riga è stata selezionata lo apprezzerei. Per la disattivazione presumo che le esigenze di proprietà CanUserSelect da impostare su false una volta è stata selezionata una voce, ma devo ancora stato successo in grado di richiamare qualsiasi cosa utilizzando il GridViewSelectColumn.

Campioni o punti di riferimento sarebbe apprezzato.

Grazie

È stato utile?

Soluzione

Mi rendo conto che questo è un vecchio post. Ma ho voluto affrontare questo nel hopse sarà aiutare gli altri. Per questo progetto ho voluto avere la possibilità di selezionare i record per una riga spcecific all'interno di una visualizzazione a griglia. Il Telerik GridView ha trovato 5 colonne, ma la collezione (tornato da un servizio WCF) in realtà contenute fino a 30 colonne.

Non ho intenzione di affrontare il legame di dati qui solo come la selezione è stato installato. Anche questo sampel non segue un modello (come MVVM) e quindi per explination rapido il codice è stato inserito nel XAML code-behind.

In primo luogo, ho bisogno di registrarsi CollectionChangedEvent gestori. Ciò che questo fatto è stato ogni volta selezionata una riga wihtin visualizzare la griglia ha generato una raccolta in memoria di tutte le voci sulla base della riga selezionata.

this.myGridView.Loaded += (o, e) =>
      {
          this.myGridView.SelectedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(SelectedItem_CollectionChanged);
      };

E per il SelectedItem_Collection Cambiato evento

        void Item_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            var index = e.NewItems[0] as myWCFService.Index;
            currentItem = index.Item;
        }
    }

Fondamentalmente ciò accade ecco quando viene rilevata una selezione dei record elementi dalla riga selezionata (compresi tutti gli elementi non illustrati in griglia) Questo viene fatto seting index = alle e.NewItems [0] dal mio webservice che è poi aggiunto alla nuova collezione (CurrentItem) in memoria.

Nota: CurrentItem è stata dichiarata nella classe principale, come:

 public myWCFService.Item currentItem;

Una volta che questo è stato fatto ho avuto la possibilità di passare i dati dalla riga selezionata (memorizzato nella collezione CurrentItem) ad altre collezioni / controlli

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top