У меня есть модель и пользовательский интерфейс
public class ModelObservable:ObservableObject, IDataErrorInfo
{
// ...some properties
// ....
public string this[string name]
{
get
{
string result = string.Empty;
result = "Always ERROR";
return result;
}
}
}
<TextBox Grid.Row="0" Margin="10"
TextWrapping="Wrap" AcceptsReturn="True"
Text="{Binding Model.AnyProp, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>
Когда я набираю текстовое поле, запускается установщик модели, также запускается событие IDataErrorInfo , но в пользовательском интерфейсе я неЯ не вижу никакого красного прямоугольника вокруг текстового поля.
Я создал простой пример в отдельном проекте, только 1 свойство, 1 текстовое поле, и это работает, но в моем приложении это не так - прямоугольник вокруг текстового полясиний.
Обновление Мое главное окно является производным от Window и вызывает проблему:
public class CustomTitleBarWindow: Window
{
public static readonly DependencyProperty ShowSystemMenuCommandProperty = DependencyProperty.Register("ShowSystemMenuCommand", typeof(ICommand), typeof(CustomTitleBarWindow), new PropertyMetadata(null));
public ICommand ShowSystemMenuCommand
{
get => (ICommand)GetValue(ShowSystemMenuCommandProperty);
set => SetValue(ShowSystemMenuCommandProperty, value);
}
public static readonly DependencyProperty MinimizeCommandProperty = DependencyProperty.Register("MinimizeCommand", typeof(ICommand), typeof(CustomTitleBarWindow), new PropertyMetadata(null));
public ICommand MinimizeCommand
{
get => (ICommand)GetValue(MinimizeCommandProperty);
set => SetValue(MinimizeCommandProperty, value);
}
public static readonly DependencyProperty MaximizeCommandProperty = DependencyProperty.Register("MaximizeCommand", typeof(ICommand), typeof(CustomTitleBarWindow), new PropertyMetadata(null));
public ICommand MaximizeCommand
{
get => (ICommand)GetValue(MaximizeCommandProperty);
set => SetValue(MaximizeCommandProperty, value);
}
public static readonly DependencyProperty CloseCommandProperty = DependencyProperty.Register("CloseCommand", typeof(ICommand), typeof(CustomTitleBarWindow), new PropertyMetadata(null));
public ICommand CloseCommand
{
get => (ICommand)GetValue(CloseCommandProperty);
set => SetValue(CloseCommandProperty, value);
}
}
Когда я возвращаю его обратно в Window, проверка начинает работать.Почему так?