Ho un elenco di oggetti personalizzati: ad esempio Frutta con due proprietà stringa Nome e Colore. Questi sono in una lista.Associazione WAGF Datagrid per elencare i problemi
private readonly List<Fruit> fruitList = new List<Fruit>();
Quindi carico gli oggetti frutta nella lista.
Sto cercando di legare questa lista per WPF Datagrid:
C#:
dgFruit.ItemsSource = "{Binding}";
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding Path=fruitList}" >
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn
Header="Name"
SelectedValueBinding="{Binding Path=Name}"
TextBinding="{Binding Path=Name}" Width="5*" />
<toolkit:DataGridComboBoxColumn
Header="Color"
SelectedValueBinding="{Binding Path=Color}"
TextBinding="{Binding Path=Color}" Width="5*" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
motivo sono in una casella combinata è perché voglio utente sia in grado di cambiare la relazione. Questo non è il vero esempio, ma hai un'idea. Per esempio, il frutto non era maturo, quindi cambiano il colore della banana in verde :)
Non ho alcuna fortuna a ottenere questi elementi nel datagrid ... e in fondo alla traccia, voglio un fare clic sulla voce nella datagridcell per passare alla casella combinata e mostrare tutti i possibili tipi di frutta nomi e colori (in modo che possano cambiare i rapporti)
Ecco un errore che sto ricevendo:
System.Windows.Data Error: 39 : BindingExpression path error: 'Color' property not found on 'object' ''Char' (HashCode=6750311)'. BindingExpression:Path=Color; DataItem='Char' (HashCode=6750311); target element is 'TextBlockComboBox' (Name=''); target property is 'Text' (type 'String')
Can qualcuno ti aiuta? La ragione per cui sto impostando le mie colonne in xaml è che posso impostare la larghezza alle dimensioni della stella e avere le colonne di uguale larghezza.
Vedo la maggior parte degli esempi utilizzare ObservableCollection ma se riesco a legare alla lista perché devo usare questo?
favore fatemi knwo se il mio esempio richiede ulteriori chiarimenti
Edit: quello che ho adesso:
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding}"
AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn
Header="Name"
Width="5*"/>
<toolkit:DataGridComboBoxColumn
Header="Color"
Width="5*"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
C#:
DataContext = fruitList;
realtà quando uso DataContext non ho capito Signorina. Quando uso ItemSource ottengo linee vuote, ma il numero corretto di righe, quindi questo sembra più lungo le linee giuste.
Posso ottenere i dati per mostrare se lo lascio Automatico generare colonne. Se metto autogeneratecolumns su false e poi specifico le mie colonne in xaml come se volessi usare il dimensionamento a stella, ottengo il giusto numero di colonne ma nessun testo!
si arresta ma quando lo faccio le colonne che definisco in xaml vengono ignorate e ne aggiungono di nuove a sinistra. Posso programmare in modo programmato le dimensioni delle stelle per queste colonne generate automaticamente? – baron
È possibile disattivare quelli generati automaticamente. Sul tuo DataGrid in XAML: AutoGenerateColumns = "False" – lesscode
avvicinarsi, ora nessun articolo mostra però :(vedi modifica recente – baron