odgałęzieniem this pytanie -WPF Validation ErrorTemplate dla klienta TextBox
Podczas mocowania szablonu błąd sprawdzania poprawności do mojego niestandardowego pola tekstowego tak -
<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>
Jeśli nie było błędu walidacji w ViewModelProperty, moi aplikacja rzuca wyjątek -
Key cannot be null.
Parameter name: key
Nie jestem pewien, dlaczego tak się dzieje. Czy jest coś, co należy zrobić, aby przypisać nowy szablon błędu do niestandardowego formantu?
UPDATE:
Mam zorientowali się, że problem jest z właściwością zmiennych w szablonie błędu. Jeśli usuniemy tag, działa dobrze.
Dzięki
Zdaję sobie sprawę, że jest to stara sprawa, ale zgaduję, że pierwszy przykład zwrócił wyjątek, ponieważ nie było żadnych błędów w 'kolekcji Validation.Errors', ale starali się wiązać właściwość "ErrorContent" pierwszego (nieistniejącego) błędu. W swoim rozwiązaniu opieramy się tylko na komunikacie o błędzie, gdy właściwość "HasError" była prawdziwa, a zatem, gdy wystąpił jeden lub więcej błędów w kolekcji. Nawet w tym drugim przykładzie powinieneś zobaczyć wyjątek wyświetlany w oknie Output programu Visual Studio. – Sheridan