Je veux définir le style à partir de code derrière pour GridView
de ListView
. Puisque c'est la propriété de dépendance , je voudrais surveiller quand il est changé.Moniteur pour ListView.Voir les modifications
Essayer d'ajouter propriété de dépendance a changé le rappel de this answer:
var handler = new DependencyPropertyChangedEventHandler(Handler);
DependencyPropertyDescriptor.FromProperty(ListView.ViewProperty,
typeof(ListView)).AddValueChanged(listView, handler);
où gestionnaire est
void Handler(object sender, DependencyPropertyChangedEventArgs e) { ... }
provoquera une erreur du compilateur:
Error CS1503 Argument 2: cannot convert from 'System.Windows.DependencyPropertyChangedEventHandler' to 'System.EventHandler'
essayant de jeter (EventHandler)handler
toujours garder compilateur plaindre:
Error CS0030 Cannot convert type 'System.Windows.DependencyPropertyChangedEventHandler' to 'System.EventHandler'
Si je tente d'utiliser gestionnaire d'événements standard:
var handler = new EventHandler(Handler);
où
void Handler(object sender, EventArgs e) { ... }
rend compilable, mais il se bloque lors de l'exécution avec
An unhandled exception of type 'System.ArgumentException' occurred in PresentationFramework.dll
Additional information: Handler type is not valid.
Que puis-je faire d'autre AddValueChanged
avec callback de propriété de dépendance? Peut-être que l'approche est mauvaise, pourquoi? Sinon, comment puis-je être informé lorsque ListView.View
est modifié?
Je ne veux appliquer aucune des solutions de this answer: ne peut pas utiliser de liaison (la valeur sera définie dans xaml) et ne souhaite pas créer MyListView
uniquement pour cela.
Merci pour vérifier, c'était vraiment utile. L'erreur vient en effet d'un autre gestionnaire d'événement (ce qui rend ma question médiocre), mais le titre + la réponse pourrait être utile pour quelqu'un d'autre je suppose. – Sinatr