| 

.NET C# Java Javascript Exception

6
Hallo zusammen.

Ich habe folgendes Problem.
Mit einer ValidationRule prüfe ich die Eingabe einer Textbox.

public class PreisValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
decimal val;

if (decimal.TryParse(value.ToString(), out val))
{
if (val < 0)
{
return new ValidationResult(false, "Preis darf nicht negativ sein");
}
return ValidationResult.ValidResult;
}
return new ValidationResult(false, "Keine Zahl eingegeben");
}
}


Meine Textbox sieht folgendermaßen aus:

<TextBox Grid.Column="1" Grid.Row="0" x:Name="tx">
<Binding Path="Price" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:PreisValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
<TextBlock Text="??????" />


Mein Ziel ist es jetzt das ich die Fehlermeldungen, die die PreisValidationRule zurückgibt an einen TextBlock binde.
Ich weiß aber nicht wie ich das machen kann.

Wie kann ich die Fehlermeldungen direkt an einen Textblock binden?

Viele Grüße
Jörg
30.11.2011
multi1209 848 1 8
gfoidl 9,4k 3 5
2 Antworten
1
Hallo,

mach dir ein DataTemplate:
<DataTemplate DataType="{x:Type ValidationError}">
<TextBlock FontStyle ="Italic"
Foreground ="Red"
HorizontalAlignment="Right"
Margin ="0,1"
Text ="{Binding ErrorContent}" />
</DataTemplate>

und dann dort wo der TextBlock sein soll:
<ContentPresenter Grid.Row="1" Grid.Column="2"
Content ="{Binding (Validation.Errors).CurrentItem, ElementName=txtName}" />

Wobei hier über den ElementName die TextBox referenziert wird.

BTW: Nimm aber lieber anstatt der ValidatationRule IDataErrorInfo.

mfG Gü
30.11.2011
gfoidl 9,4k 3 5
0
Danke für die Antwort. Ich werde es so mal probieren.
01.12.2011
multi1209 848 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH