2013-08-27 13 views
8

Ho il seguente codice che popola il mio controllo utente in forma di righe e colonne. Il controllo utente che viene popolato contiene Button, collegamenti, casella di testo, ecc. Quando un determinato tasto viene premuto su un particolare controllo utente in una particolare riga/colonna, ho bisogno di sapere per quale controllo utente è stato premuto quel pulsante. Ecco l'XAML popola i controlli utente in righe e colonneOttenere l'elemento selezionato in ItemsControl

<ItemsControl ItemsSource="{Binding Templates}" Width="{Binding GridWidth}"> 
     <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <UniformGrid Columns="{Binding NumColumns}" /> 
       </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemContainerStyle> 
       <Style> 
        <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" /> 
        <Setter Property="Grid.Row" Value="{Binding RowIndex}" /> 
        </Style> 
       </ItemsControl.ItemContainerStyle> 
       <ItemsControl.ItemTemplate> 
    </ItemsControl> 

Modelli è fondamentalmente un insieme di controlli utente che vengono popolate in righe/colonne. Preferibilmente voglio farlo in ViewModel ma la soluzione nel codice dietro per ora funzionerà pure.

+2

Un 'ItemsControl' non tiene traccia dell'elemento selezionato. Se vuoi questo comportamento, usa qualcosa come un 'ListBox' e sovrascrivi il modello, come [this] (http://stackoverflow.com/a/9069382/302677) – Rachel

risposta

12

ItemsControl non può selezionare elementi, solo raccolte presenti. Solo uno Selector o uno dei suoi discendenti può selezionare elementi.

Per il tuo scenario, penso che un ListView con GridView si adatterebbe. Quando l'utente farebbe clic su un controllo nella linea, l'evento diventerebbe blu allo ListView e l'elemento verrà selezionato. È possibile sovrascrivere gli stili predefiniti in modo che non vengano visualizzati come linea selezionata: WPF ListView turn off selection.

+0

come posso visualizzare la collezione UserControls in ListView? – WAQ

+1

È possibile impostarli come modello di dati dei tuoi articoli – CKII

Problemi correlati