我有一个属性名称,在模型中是必需的。然后在VM中我有一个Name属性来访问模型之一。在我看来,我将文本框绑定到VM的Name属性。但是当文本框为空时,文本框不会显示为红色。我收到错误:字段名称是必需的。但是文本框再次变为红色。请帮忙
这是模型:
public class Task : BasicAuditTrail
{
[Required]
[MaxLength(256)]
public string Name { get; set; }
}
这是VM:
public class TaskManagerViewModel : ViewModelBase, ITaskManagerViewModel
{
public Task CurrentTask => taskManager.CurrentTask;
public string Name
{
get
{
return CurrentTask.Name;
}
set
{
CurrentTask.Name = value;
IsDirty = true;
RaisePropertyChanged();
}
}
观点:
<TextBox Grid.Row="0" Grid.Column="3" Name="Name" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />
答案 0 :(得分:1)
正如评论中所提到的,CurrentTask的Name属性应该直接绑定到Textbox。这使错误正常工作。
要在viemwodel上设置IsDirty属性,请订阅CurrentTask的PropertyChanged事件并在那里设置IsDirty!
PS:确保在CurrentTask发生变化时删除事件,以免发生任何内存泄漏