빨간색 사각형이 UI에 표시되지 않는 것이 문제입니다.MVVM 패턴 : 다른 모델에 모델을 래핑 한 경우 IDataErrorInfo 유효성 검사가 작동하지 않습니다.
다음<StackPanel Grid.Row="0">
<Label>Customer name:</Label>
<TextBox x:Name="txtName" Text="{Binding Target.Model.Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Width="136" HorizontalAlignment="Left"/>
</StackPanel>
가 뷰 모델입니다 :
내가 Caliburn.Micro를 사용하고 이것이
내가 내 보기에있는 것입니다internal class ShellViewModel : Screen
{
private EditableCustomer _Target;
public EditableCustomer Target
{
get { return _Target; }
set { if (_Target != value) { _Target = value; NotifyOfPropertyChange(nameof(Target)); } }
}
}
이 내가이 무엇인지입니다 모델 :
internal class EditableCustomer : PropertyChangedBase, IDataErrorInfo
{
private CustomerInfo _Model;
public CustomerInfo Model
{
get { return _Model; }
set { if (_Model != value) { _Model = value; NotifyOfPropertyChange(nameof(Model)); } }
}
}
그리고 이것은 또 다른 모델입니다 :
internal class CustomerInfo : PropertyChangedBase
{
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; NotifyOfPropertyChange(nameof(Name)); }
}
}
내가 CustomerInfo 모델에 EditableCustomer에서 IDataErrorInfo 인터페이스를 이동할 수 있습니다 알고 내가 그렇게하면 모든 것이 완벽하게 작동하지만 문제는 내가 허용되지 않아이다 고객 정보 모델을 변경하려면
다른 사람이 내가 뭘 할 수 있는지 알지 못합니까?
텍스트 상자를 오류 스타일에 어디에 바인딩합니까? – FCin
오류 유형이란 무엇입니까? 죄송합니다. 귀하의 질문을 이해할 수 없습니다. IDataErrorInterface를 CustomerInfo로 옮길 수 있다는 것을 알았습니다. 그런 다음 모든 것이 잘 작동합니다. – Navuhodonosor
오류를 표시하는 방법에 대한 정보는 어디에 저장합니까? 'IDataError'는 데이터의 유효성 만 검사합니다. 오류를 표시하는 방법을 알지 못합니다. 다음은 오류 스타일을 지정하는 예제입니다. http://stackoverflow.com/questions/14023552/how-to-use-idataerrorinfo-error-in-a-wpf-program – FCin