Forums Neueste Beiträge
 

[WPF] Validation.Errors

26/04/2010 - 20:29 von Michael Thelen | Report spam
Hallo zusammen!

Ich habe folgende Frage zu Validation.Errors bei der Validierung von
Daten. Ich habe verstanden, das Valitdation.Erros eine Attached Property
ist und deswegen funktioniert so was hier:

<Style x:Key="textStyleTextBox" TargetType="TextBox">
<Setter Property="Foreground" Value="#333333" />
<Setter Property="MaxLength" Value="40" />
<Setter Property="Width" Value="392" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>

Hintergrund war der, mal zu verstehen wie RelativeSource funktioniert.
In Beispielen, die ich gefunden habe, werden Attached Properties immer
so erklàrt, dass sie durch ein hierarchisch höheres Element dem innen
liegenden Element in XAML "attached" werden. Ich habe ja aber außerhalb
von TextBox kein Element benutzt, welches Validation.Errors als Property
hat. Wie wird das also an die TextBox "attached"?

Gruß
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
27/04/2010 - 08:17 | Warnen spam
Hallo Michael,

Ich habe folgende Frage zu Validation.Errors bei der Validierung von
Daten.



ok, Du weißt ja schon eine Menge darüber:
http://groups.google.com/group/micr...c8d7c6f018
http://dzaebel.net/Downloads/WpfTextBoxBinding.zip

deswegen spreche ich nur wenige Dinge an.


Ich habe folgende Frage zu Validation.Errors bei der Validierung von
Daten. Ich habe verstanden, das Valitdation.Erros eine Attached Property
ist und deswegen funktioniert so was hier: [...]
Hintergrund war der, mal zu verstehen wie RelativeSource funktioniert.



naja, sie gibt die Position der Bindungsquelle relativ
zur Position des Bindungsziels an.

[RelativeSource-Klasse (System.Windows.Data)]
http://msdn.microsoft.com/de-de/lib...ource.aspx

Wobei "Self" (beim RelativeSource) Dir ja erlaubt, zu einer Eigenschaft
des
Elementes, das Du gerade bindest (hier TextBox -> Text), eine andere
Eigenschaft
zu binden. Also schon das aktuelle Bindungs-Element und nicht ein
übergeordneter - was anderes wàre "RelativeSource.FindAncestor".

[RelativeSourceMode-Enumeration (System.Windows.Data)]
http://msdn.microsoft.com/de-de/lib...emode.aspx



In Beispielen, die ich gefunden habe, werden Attached Properties immer
so erklàrt, dass sie durch ein hierarchisch höheres Element dem innen
liegenden Element in XAML "attached" werden. Ich habe ja aber außerhalb
von TextBox kein Element benutzt, welches Validation.Errors als Property
hat. Wie wird das also an die TextBox "attached"?



Validation.Errors ist ja bereits eine angefügt Eigenschaft, die
die Auflistung aller aktiven ValidationError-Objekte des
gebundenen Elements (hier TextBox.Text) abruft.

[Validation.Errors (angefügte Eigenschaft) (System.Windows.Controls)]
http://msdn.microsoft.com/de-de/lib...rrors.aspx

Dass "angefügte Eigenschaften" untergeordneten Elementen ermöglichen,
Werte für Eigenschaften anzugeben, die eigentlich im übergeordneten
Element
definiert sind, bleibt damit unbenommen. Im Prinzip erstellst Du ja nur
statische
zusàtzliche Set- und Get-Methoden für die Klasse des untergeordneten
Elementes,
die es (diesem untergeordneten Element) erlauben, der Wert der
übergordneten Eigenschaft zu setzen.

[Übersicht über angefügte Eigenschaften]
http://msdn.microsoft.com/de-de/lib...49011.aspx

Insgesamt vermischen sich ja hier hier einige Bereiche
und das Beschrieben aller Bereiche wàre wohl zu umfangreich.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen