Ciao a tutti. Ho una form in WPF che contiente una DataGridView e un calendario con implementato il suo metodo calendario_SelectedDatesChanged come di seguito riportati:
codice:
<DataGrid AutoGenerateColumns="False" Grid.Row="1" Margin="0,46.86,0,8" Name="dgvAssentiOggi" ItemsSource="{Binding Assenze, Source={StaticResource accessoDati}}" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" d:LayoutOverrides="Width">
<DataGrid.Columns>
<DataGridTextColumn Header="Nome Richiedente" Binding="{Binding NomeRichiedente}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Cognome Richiedente" Binding="{Binding CognomeRichiedente}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Data Compilazione" Binding="{Binding DataDiRichiesta, StringFormat=dd/MM/yyyy}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Ora inizio assenza" Binding="{Binding OraInizioAssenza, StringFormat=HH:mm}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Ora fine assenza" Binding="{Binding OraFineAssenza, StringFormat=HH:mm}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Permesso" Binding="{Binding Permesso, Converter={StaticResource boolToX}}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Ferie" Binding="{Binding Ferie, Converter={StaticResource boolToX}}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Malattia" Binding="{Binding Malattia, Converter={StaticResource boolToX}}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="Ritardo" Binding="{Binding Ritardo, Converter={StaticResource boolToX}}" CanUserReorder="False" CanUserResize="False" IsReadOnly="True" Width="Auto" />
</DataGrid.Columns>
</DataGrid>
<Calendar Margin="450,12,0,0" Name="calendario" Height="168" VerticalAlignment="Top" HorizontalAlignment="Left" Width="195" SelectedDatesChanged="calendario_SelectedDatesChanged" />
Poi ho questa classe per accedere ai dati del DB:
codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.Windows;
using System.ComponentModel;
namespace Permessi.ViewModels
{
public class AccessoDati:INotifyPropertyChanged
{
private DateTime cambioData;
private ObservableCollection<Assenze> assenze = null;
public ObservableCollection<Assenze> Assenze
{
get
{
return this.assenze;
}
private set
{
this.assenze = value;
}
}
public AccessoDati()
{
if (!MainWindow.IsInDesignMode())
{
this.Assenze = new ObservableCollection<Assenze>();
this.AggiornaDati();
}
}
private void AggiornaDati()
{
PermessiEntities context = new PermessiEntities();
cambioData = new DateTime(MainWindow.dataSelezionata.Year, MainWindow.dataSelezionata.Month, MainWindow.dataSelezionata.Day);
foreach (Assenze el in context.Assenzes)
{
if(el.DataDiAssenza==cambioData)
{
this.Assenze.Add(el);
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
che non è altro che la statitrosource alla quale faccio il Binding all'iterno della DataGridView.
Quello che vorrei fare è aggiornare la datagridview quando vado a modificare la data all'interno del calendario semplicemente cliccando sul giorno. Come vedete ci sto provando e ho iniziato a implementare l'interfaccia INotifyPropertyChanged, ma non so proprio come andare avanti. Potreste aiutarmi? Grazie.