[WPF] Positive Validation führt zu Exception

26/02/2010 - 22:20 von Michael Thelen | Report spam
Hallo NG,

ich habe noch ein weiteres Problem mit der Textbox Valitdation.
Folgendes habe ich ich in der App.xaml definiert:

<Application.Resources>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="
{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Image DockPanel.Dock="Right"
Source="images/warning.gif" Height="20" Margin="5,0,0,0" />
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="adornedElement"/>
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>

Folgendes Szenario:
- Ich gebe einen Text ein der zu kurz ist und verlasse den Fokus.
- Validierung wird ausgeführt und der rote Rand und das Image werden
angezeigt.
- Jetzt klicke ich wieder in das Textfeld und gebe einen Text ein, der
ausreichend lang ist.
- Validierung wird ausgeführt und der rote Rand und das Image verschwinden.

Ich bekomme aber folgende Exception:
System.Windows.Data Error: 16 : Cannot get 'Item[]' value (type
'ValidationError') from '(Validation.Errors)' (type
'ReadOnlyObservableCollection`1').
BindingExpression:Path=(0).[0].ErrorContent; DataItem='TextBox'
(Name='tbLimitlineTitle'); target element is 'TextBox'
(Name='tbLimitlineTitle'); target property is 'ToolTip' (type 'Object')
TargetInvocationException:'System.Reflection.TargetInvocationException:
Ein Aufrufziel hat einen Ausnahmefehler verursacht. >
System.ArgumentOutOfRangeException: Der Index lag außerhalb des
Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
Parametername: index
bei System.ThrowHelper.ThrowArgumentOutOfRangeException()
bei System.Collections.Generic.List`1.get_Item(Int32 index)
bei System.Collections.ObjectModel.Collection`1.get_Item(Int32 index)
bei
System.Collections.ObjectModel.ReadOnlyCollection`1.get_Item(Int32 index)

Nebenbei gefragt: Wie debugge ich eigentlich Dinge, die ich in XAML
geschrieben habe? Das ist mit ein Grund, warum ich hier an dieser Stelle
nicht weiter komme.

Gruß
Michael
 

Lesen sie die antworten

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

ich habe noch ein weiteres Problem mit der Textbox Valitdation.
Folgendes habe ich ich in der App.xaml definiert: [...]



etwas abgewandelt ... folgendes funktioniert bei mir:
(VS 2010 RC Projekt)
http://dzaebel.net/Downloads/WpfTextBoxBinding.zip

(Such-Tags: WPF, Binding, ValidationRule)


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

Ähnliche fragen