Jak uzyskać szablon błędu WPF, aby pojawił się w formancie kontrolki UserControl w WPF?Pokaż szablon błędu sprawdzania poprawności dla elementów sterujących w sterowniku UserControl w WPF
Mam UserControl zawierający dwie etykiety, dwa pola tekstowe i CheckBox. Jeden z pól tekstowych reprezentuje nazwę encji i jest powiązany z właściwością Nazwa poza właściwością Model wyeksponowaną przez mój ViewModel, który jest DataContext mojego okna. Klasa Model implementuje interfejs IDataErrorInfo i potwierdziłem poprzez Testowanie Jednostek, że gdy Nazwa jest pusta, błąd jest zwracany przez implementację indeksera właściwości. Powiązałem się z właściwością Dependency wspierającą Name TextBox w moim UserControl i gdy napotkano błąd sprawdzania poprawności szablon błędu WPF umieszcza czerwone obramowanie wokół całego UserControl, a nie tylko Name TextBox.
Wiązanie z polem nazwy UserControl jest następujące.
<vc:MyUserControl ItemName="{Binding Model.Name, ValidatesOnDataErrors=True}" />
Moja wersja UserControl z uproszczoną wersją i wersją DependencyProperty wygląda następująco.
<UserControl>
<Grid>
<TextBox Text="{Binding ItemName}" />
</Grid>
</UserControl>
public partial class MyUserControl: UserControl
{
public static readonly DependencyProperty ItemNameProperty =
DependencyProperty.Register(
"ItemName",
typeof(string),
typeof(MyUserControl),
new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)
);
public string ItemName
{
get { return (string)GetValue(ItemNameProperty); }
set { SetValue(ItemNameProperty, value); }
}
}
Informacje Znalazłem odnoszące się do tej kwestii do tej pory wszystko było w odniesieniu do Silverlight lub za pomocą konwertera, aby nie pokazać czerwoną granicę (która nie ma sensu dla mnie). Ta informacja została znaleziona tutaj na stackoverflow.
Ktoś był w stanie rozwiązać ten problem z WPF? Czy przeoczyłem coś oczywistego?
pokrewne pytanie [tutaj] (http://stackoverflow.com/q/7808986/620360) i [tutaj] (http://stackoverflow.com/q/1198342/620360) – LPL
Dzięki LPL. Podczas moich badań nad tym zagadnieniem widziałem oba te pytania. Przyjęta odpowiedź na drugi link to użycie konwertera, do którego się odwoływałem w moim pytaniu. Wydaje mi się to całkiem błędne. Przyjęta odpowiedź w pierwszym pytaniu również nie sprawdziła się u mnie. – CoderDawson