問題是未在UI上顯示紅色矩形。MVVM模式:如果我們在另一個模型中包裝了模型,則IDataErrorInfo驗證不起作用
我用Caliburn.Micro,這是是我在我的查看:
<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>
這裏是視圖模型:
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)); }
}
}
我知道我可以從EditableCustomer移動IDataErrorInfo的接口CustomerInfo模型,如果我這樣做,一切都會很好地工作,但問題是,我不能在CustomerInfo模型中進行任何更改,
有誰知道我還能做什麼?
你在哪裏將你的文本框綁定到錯誤樣式? – FCin
什麼是錯誤樣式?對不起,我不明白你的問題。我只知道我可以將IDataErrorInterface移動到CustomerInfo,然後一切正常。 – Navuhodonosor
你在哪裏存儲關於如何顯示錯誤的信息? 'IDataError'只驗證數據,它不知道如何顯示你的錯誤。以下是樣式錯誤的示例:http://stackoverflow.com/questions/14023552/how-to-use-idataerrorinfo-error-in-a-wpf-program – FCin