J'ai un problème lorsque j'essaie d'utiliser datagrid.items.add() pour ajouter des éléments d'une grille de données à une autre. Fondamentalement, j'ai deux grilles de données agissant dans une relation maître-esclave. Le First DataGrid1 est utilisé pour afficher les colonnes et les lignes générées automatiquement. Le deuxième DataGrid, DataGrid2 affichera DataGrid1.SelectedItems quand un bouton spécifique est cliqué. Chaque fois que l'on clique sur le bouton, j'aimerais que les éléments sélectionnés de DataGrid1 restent dans DataGrid2 et chaque fois que l'on clique sur le bouton, un plus grand nombre d'éléments est ajouté à DataGrid2. J'ai été en mesure de compléter la plupart de mes exigences à l'exception de la possibilité d'éditer des cellules sur DataGrid2. Lorsque je double-clique sur une cellule dans DataGrid2, j'obtiens une exception qui dit "EditItem" n'est pas autorisé pour cette vue ". J'ai lu beaucoup de messages sur l'ajout de données à un ObservableCollection, ListCollectionView et ainsi de suite, mais soit je ne peux pas les implémenter de la manière correcte ou il ne fonctionne pas pour ma situation. Mon code est le suivant et le thx à l'avance de façonComment ajouter un élément d'une grille de données à une autre puis l'éditer dans WPF
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="77" HorizontalAlignment="Left" Margin="27,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="464" />
<Button Content="AddRow" Height="23" HorizontalAlignment="Left" Margin="27,107,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<DataGrid AutoGenerateColumns="False" Height="140" HorizontalAlignment="Left" Margin="27,159,0,0" Name="dataGrid2" VerticalAlignment="Top" Width="464" />
</Grid>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); dataGrid1.ItemsSource = idata; } private void button1_Click(object sender, RoutedEventArgs e) { foreach (latlongobj item in dataGrid1.SelectedItems) { dataGrid2.Items.Add(item); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WpfApplication1 { class latlonobj { public string name { get; set; } public double Lat { get; set; } public double Lon { get; set; } } }
Voilà la réponse, merci! –
@David, si c'est la réponse, pourquoi ne votez-vous pas ou n'acceptez-vous pas la réponse? – Shimmy