INotifyDataErrorInfo — красная рамка не исчезает после очисткиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 INotifyDataErrorInfo — красная рамка не исчезает после очистки

Сообщение Гость »

Пожалуйста, ознакомьтесь с простым проектом, воспроизводящим проблему.
Проблема в том, что красная рамка (означающая наличие ошибки) остается под моим контролем, хотя ошибка устранена. p>
В приложении WPF у меня есть «MainWindow», содержащий представление «TestContainer» (с использованием ContentControl), содержащее представление «TestUserControl».
В TestUserControlViewModel, когда установлено свойство зависимости OutsideString, я очищаю ошибку вручную. Но это не учитывается и красная рамка остаётся --> НЕТ
Если я добавляю в графический интерфейс кнопку для сброса ошибки, то она работает и красная рамка пропадает.< /p>
Я похож на ошибку в фреймворке.
У вас есть идея?
MainWindow.xaml













MainWindowViewModel.cs
namespace WpfApp1
{
public class MainWindowViewModel
{
public TestContainerViewModel TestContainerViewModel { get; set; } = new();
}
}


ConventionBasedDataTemplateSelector.cs
namespace WpfApp1
{
public class ConventionBasedDataTemplateSelector : DataTemplateSelector
{
#region Public Methods
///
/// When overridden in a derived class, returns a based on custom logic.
///
///
The data object for which to select the template.
/// The data-bound object.
///
/// Returns a or null. The default value is null.
///
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
Type viewType = typeof(TestContainer);
FrameworkElementFactory frameworkElementFactory = new(viewType);
return new DataTemplate { VisualTree = frameworkElementFactory };
}
#endregion
}
}

TestContainer.xaml







TestContainerViewModel.cs
namespace WpfApp1
{
public class TestContainerViewModel
{
public string TotoString => "Toto";
}
}

TestUserControl.xaml












TestUserControl.xaml.cs
using System.Windows;
using System.Windows.Controls;

namespace WpfApp1
{
public partial class TestUserControl : UserControl
{
public TestUserControl()
{
InitializeComponent();
}

#region OutsideString Dependency Property
public static readonly DependencyProperty OutsideStringProperty = DependencyProperty.Register(
nameof(OutsideString), typeof(string), typeof(TestUserControl),
new PropertyMetadata(default(string), OnOutsideStringPropertyChanged));

public string OutsideString
{
get => (string)GetValue(OutsideStringProperty);
set => SetValue(OutsideStringProperty, value);
}

private static void OnOutsideStringPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
TestUserControlViewModel viewModel = (TestUserControlViewModel)((TestUserControl)d).RootContainer.DataContext;
viewModel.OutsideString = (string)e.NewValue;
}
#endregion
}
}


TestUserControlViewModel.cs
using System.Collections;
using System.ComponentModel;

namespace WpfApp1
{

public class TestUserControlViewModel : INotifyPropertyChanged, INotifyDataErrorInfo
{
private string _outsideString;
private bool _hasError = true;

public event EventHandler ErrorsChanged;

public event PropertyChangedEventHandler PropertyChanged;

public bool HasErrors => _hasError;

public string OutsideString
{
get => _outsideString;
set
{
_outsideString = value;
_hasError = false;

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(OutsideString)));
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(OutsideString)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(HasErrors)));
}
}

public IEnumerable GetErrors(string propertyName)
{
return HasErrors ? new []{"Error message"} : null;
}

}
}


Подробнее здесь: https://stackoverflow.com/questions/781 ... en-cleared
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как передать ошибки inotifydataerrorinfo в вложенные пользовательские элементы управления в WPF?
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как передать ошибки inotifydataerrorinfo в вложенные пользовательские элементы управления в WPF?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Красная линия при импорте реакции-дом/клиента при установленной зависимости от разработчиков @types/react-dom
    Anonymous » » в форуме Javascript
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Красная подчеркивание требований.
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Красная подчеркивание требований.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»