Das Problem ist, dass das rote Rechteck nicht auf der Benutzeroberfläche angezeigt wird.MVVM-Muster: IDataErrorInfo-Validierung funktioniert nicht, wenn wir das Modell in ein anderes Modell eingepackt haben
Ich benutze Caliburn.Micro und das ist das, was ich in meinem Ansicht haben:
<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>
Hier ist die Ansichtsmodell:
internal class ShellViewModel : Screen
{
private EditableCustomer _Target;
public EditableCustomer Target
{
get { return _Target; }
set { if (_Target != value) { _Target = value; NotifyOfPropertyChange(nameof(Target)); } }
}
}
Dies ist, was ich in der haben Modell:
internal class EditableCustomer : PropertyChangedBase, IDataErrorInfo
{
private CustomerInfo _Model;
public CustomerInfo Model
{
get { return _Model; }
set { if (_Model != value) { _Model = value; NotifyOfPropertyChange(nameof(Model)); } }
}
}
Und das ist ein weiteres Modell:
internal class CustomerInfo : PropertyChangedBase
{
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; NotifyOfPropertyChange(nameof(Name)); }
}
}
Ich weiß, ich IDataErrorInfo Schnittstelle von EditableCustomer zu Customer Modell bewegen kann und alles funktioniert perfekt, wenn ich so tun, aber das Problem ist, dass ich nicht erlaubt bin Um Änderungen im CustomerInfo-Modell vorzunehmen,
Hat jemand eine Idee, was ich noch tun kann?
Wo binden Sie Ihre Textbox an Fehlerstil? – FCin
Was ist ein Fehlerstil? Entschuldigung, ich verstehe deine Frage nicht. Ich weiß nur, dass ich IDataErrorInterface zu CustomerInfo bewegen kann und dann alles gut funktioniert. – Navuhodonosor
Wo speichern Sie Informationen zur Anzeige Ihres Fehlers? 'IDataError' validiert nur Daten, es kann Ihre Fehler nicht anzeigen. Hier ist ein Beispiel für das Formatieren Ihrer Fehler: http://stackoverflow.com/questions/14023552/how-to-use-idataerrorinfo-error-in-a-wpf-program – FCin