Ich verwende MVVM und mein Objekt implementieren IDataErrorInfo. Wenn eine Eigenschaft festgelegt ist, führe ich benutzerdefinierte Validierungsmethoden aus, und wenn die Überprüfung erfolgreich ist, gebe ich String.empty zurück, wodurch Validation.HasError auf false gesetzt wird. Wenn die Validierung fehlschlägt, wird Validation.HasError auf True festgelegt. Ich habe einen Stil, den ich für „erforderlichen Kontrollen“ verwenden (Kontrollen, die die Gültigkeitsprüfung durchführen) und stellen Sie ist die Quick-Info der Steuerung auf das, was der Fehler ist wie folgt:Validation.HasError wird nicht erneut ausgelöst, wenn ein neuer Fehler auftritt, während bereits true
<Style x:Key="RequiredControl" TargetType="{x:Type Control}" >
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding (Validation.Errors), Converter={StaticResource ErrorConverter}, RelativeSource={x:Static RelativeSource.Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
Und die ErrorConverter:
public class ZynErrorContentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var errors = value as ReadOnlyObservableCollection<ValidationError>;
if (errors == null) return "";
return errors.Count > 0 ? errors[0].ErrorContent : "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Das Problem ist das: Der Benutzer gibt etwas ungültiges ... und der Validation.HasError wird auf True festgelegt. Der Tooltip wird so aktualisiert, wie er sollte. Wenn der Benutzer versucht, den Fehler zu korrigieren, aber einen Wert eingibt, der eine andere Art der Ungültigmachung verursacht, sollte die QuickInfo die neue Fehlerzeichenfolge anzeigen. Dies geschieht jedoch nicht. Der Fehler wird als der gleiche Fehler vom ersten Fehler angezeigt. Ich weiß, warum das passiert (denke ich) ... Weil der Trigger nicht ausgelöst wird, weil sich der Validation.HasError niemals von True -> False -> True ändert.
Hat jemand irgendwelche Erfahrung mit diesem oder einigen Ratschlägen, wie man den Auslöser erzwingt?
Ich habe das gleiche Problem - haben Sie es geschafft, dies zu lösen? – pilsdumps
Nein, nie. Immer noch nervt mich. – Thelonias