Branching off of this question –
When attaching a validation error template to my custom textbox like this –
<local:CustomTextBox CustomText="{Binding ViewModelProperty}" Validation.ErrorTemplate="{StaticResource errorTemplate}"/>
<ControlTemplate x:Key="errorTemplate">
<DockPanel>
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="controlWithError"/>
</Border>
<TextBlock Foreground="Red" FontSize="20" FontFamily="Segoe UI" Margin="3,0,0,0" MouseDown="Exclamation_MouseDown" Tag="{Binding AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=controlWithError}">!</TextBlock>
</DockPanel>
</ControlTemplate>
If there was a validation error in the ViewModelProperty, my application was throwing an exception –
Key cannot be null.
Parameter name: key
I’m not sure why this is happening. Is there something that needs to be done in order to assign a new error template to a custom control?
UPDATE:
I’ve figured out that the issue is with the Tag property in the error template. If I remove the Tag, it works just fine.
Thanks
Alright so the way I managed to fix the issue was by removing the AdornedElement keyword and changing the error template as follows:
What I don’t understand is why it behaves differently when using the AdornedElement keyword but works fine when binding the Tag/Tooltip using the RelativeSource. While the problem is solved, I would welcome any ideas as to why this happened.
Thanks