J'ai un DataGrid dans un WPF peuplé d'un fichier csv. Ceci est fait avec Linq et remplit la grille de données via CollectionViewSource.Source.Mise à jour de WPF DataGrid
L'exigence est pour toutes les mises à jour/modifications apportées aux données dans le DataGrid pour ensuite être réenregistrés dans le csv.
J'ai besoin de savoir comment enregistrer les modifications apportées aux données? J'ai joué avec certains des événements et datacontext et similaires, mais rien ne fonctionne encore.
Excusez-moi si c'est la question du type d'un débutant. Le passage des applications Windows à WPF est une courbe d'apprentissage abrupte (pour moi au moins). Je viens de peupler un tableau pour l'instant pendant que j'essaie de comprendre. Fondamentalement, je veux juste récupérer les données à nouveau, enregistrez-le comme var.
System.Windows.Data.CollectionViewSource personViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("personViewSource")));
List<Person> T = new List<Person>();
Person p = new Person();
string[] str = new string[] { "Stacey", "Olivia", "Dylan", "Lauryn", "Beth", "Caitlin" };
var data = from s in str
select s;
Person pers;
foreach (var d in data)
{
pers = new Person();
pers.Name = d;
pers.Age = 22;
T.Add(pers);
}
personViewSource.Source = T;
Le XAML:
<Window x:Class="WpfApplication4.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" Loaded="Window_Loaded" Name="win1" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:my="clr-namespace:WpfApplication4">
<Window.Resources>
<CollectionViewSource x:Key="personViewSource" d:DesignSource="{d:DesignInstance my:Person, CreateList=True}" />
</Window.Resources>
<StackPanel Width="369" Height="230" DataContext="{StaticResource personViewSource}">
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Name="personDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" Width="88" HorizontalAlignment="Left" BorderThickness="4" Background="#FFF8C5C5" SelectionChanged="personDataGrid_SelectionChanged" TextInput="personDataGrid_TextInput" RowEditEnding="personDataGrid_RowEditEnding" TargetUpdated="personDataGrid_TargetUpdated">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Binding="{Binding Path=Name, Mode=TwoWay, NotifyOnTargetUpdated=True}" Header="Name" Width="SizeToHeader" />
<DataGridTextColumn x:Name="ageColumn" Binding="{Binding Path=Age}" Header="Age" Width="SizeToHeader" Foreground="#FFC14040" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
Merci
Comment voulez-vous que cela fonctionne? Le DataGrid doit-il enregistrer les valeurs dans un fichier automatiquement? Ou chaque fois qu'un bouton est poussé ou quelque chose d'aussi manuel? En outre, peut-être nous montrer le code pour obtenir les données dans le DataGrid en premier lieu serait utile. – Goblin
Soit automatiquement ou via un bouton de soumission. Je me bats juste pour obtenir ma tête autour de lui – Chris
vos données s'affichent correctement? parce que s'il est en train d'éditer, il devrait mettre à jour votre objet person, mettre un point d'arrêt sur l'un des setters d'une propriété pour être sûr. –