Ich habe ziemlich viel Zeit damit verbracht, verschiedene Möglichkeiten auszuprobieren, um ein Problem zu lösen, das ich habe, ohne Erfolg, also hoffe ich, dass hier jemand helfen kann.Zugriff auf die Bindung vom Typkonverter?
Ich habe ein Textfeld-Element mit Zwei-Wege-Bindung, die einen Typkonverter verwendet, um den Wert von einer Zeichenfolge in einen benutzerdefinierten Datentyp zu konvertieren, sagen wir MyCustomType
. Dies funktioniert gut, aber aufgrund einer Änderung in den Anforderungen meines Projekts muss ich jetzt zusätzliche Verarbeitung durchführen, bevor die Konvertierung stattfindet.
Um diese zusätzliche Verarbeitung durchzuführen, muss ich jedoch auf das Textfeld "Quelle" oder den Bindungskontext zugreifen können. Auf beides konnte ich nicht zugreifen.
Gibt es eine Möglichkeit, von einer ConvertFrom()
Methode des Typkonverters auf das Quelltextfeld zuzugreifen?
Ich habe versucht, den ITypeDescriptorContext
Parameter (durch WPF) an die ConvertFrom()
Methode übergeben, aber die meisten Eigenschaften darin sind null.
dh
public class MyCustomTypeConverter : TypeConverter
{
...
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
// Context is
return new MyCustomType(value);
}
...
}
Ich habe auch eine MultiValueConverter
mit versucht, und die Vermeidung der Typ-Wandler vollständig, jedoch führte dies zu einem LOT zusätzlichen Code, und hat nicht wirklich geholfen. Ich würde es vorziehen, diesen Weg zu vermeiden, da ein Typkonverter viel eleganter ist.
Jede Beratung/Unterstützung wäre sehr willkommen! :)
Warum wollen Sie Bindung zugreifen? Kann sein, dass es einen anderen Weg gibt – Nitin
Ich denke nicht, dass es möglich ist, von TypeConverters auf Bindungen zuzugreifen. Sie müssen mit DataLayer arbeiten, scheint auch viel unnötige Arbeit. Wenn Sie die Frage, was das ganze Problem ist, aktualisieren, können Ihnen die Leute auf diese Weise sehr leicht helfen. –
@Nitin, ich habe versucht, auf die Quell-TextBox zuzugreifen, damit ich sie an eine andere Methode (als Referenz) weitergeben kann, damit ich bestimmte Aufgaben bei Validierungsfehlern ausführen kann. Dies ist nicht unbedingt der beste Weg, um dies zu tun, jedoch haben sich die Anforderungen des Projekts relativ spät in der Entwicklungsphase geändert, und dies ist eine funktionale, etwas vorübergehende Lösung. (Es ist ziemlich hoch auf meiner Liste der Dinge zu refaktorieren, wenn ich etwas Zeit habe). Vielen Dank für Ihre Antworten. – XtraSimplicity