Je travaille avec des objets de dépendance ici, pas beaucoup avec eux auparavant, mais ils semblent très utiles.WPF C# Enregistrement Modification de données d'objet de dépendance
Fondamentalement, j'ai utilisé ces objets pour être éditable dans un ListView. Cependant, je dois alors écrire ces changements en SQL. Ma question est, existe-t-il un moyen d'enregistrer si les données ont été modifiées parce que je ne veux pas écrire de nouveau à SQL chaque fois que quelqu'un voit les données. Actuellement, j'ai ceci:
public class KPI : DependencyObject
{
public static readonly DependencyProperty DepartmentProperty = DependencyProperty.Register("Department", typeof(string), typeof(KPI), new UIPropertyMetadata(null));
public string Department
{
get { return (string)GetValue(DepartmentProperty); }
set { SetValue(DepartmentProperty, value); }
}
public static readonly DependencyProperty KPINumberProperty = DependencyProperty.Register("KPINumberProperty", typeof(int), typeof(KPI), new UIPropertyMetadata(null));
public int KPINumber
{
get { return (int)GetValue(KPINumberProperty); }
set { SetValue(KPINumberProperty, value); }
}
}
Mon idée était d'avoir quelque chose comme:
public static bool DataModified = false;
public static readonly DependencyProperty DepartmentProperty = DependencyProperty.Register("Department", typeof(string), typeof(KPI), new UIPropertyMetadata(null));
public string Department
{
get { return (string)GetValue(DepartmentProperty); }
set { SetValue(DepartmentProperty, value); DataModified = true; }
}
Ainsi, chaque fois que quelque chose est édité la propriété DataModified sera réglé sur TRUE, est-ce une bonne façon de le faire ? Ou quelqu'un a-t-il une bien meilleure façon de le faire?
Merci d'avance.
SumGuy.
Dans quel cas le moteur de liaison appelle la propriété Department CLR au lieu d'appeler directement SetValue? – Robin
@Robin: C'est difficile à dire; dans certains cas, il peut appeler le wrapper CLR, dans certains cas il peut directement appeler les méthodes 'GetValue' et' SetValue'. De plus, les propriétés CLR rendent intellisense pour faire apparaître les noms dans le XAML. – Nawaz
Je suis d'accord qu'il est préférable de faire les propriétés CLR, mais je n'ai jamais vu ou lu à peu près à tout moment où le moteur de liaison les utilise à la place de GetValue ou SetValue. Je vais vous croire sur parole. – Robin