【发布时间】:2021-09-18 18:27:09
【问题描述】:
我正在尝试在属性对象更改时使用 FluentValidation 验证该对象。
private Empresa empresa { get; set; }
public Empresa Empresa{
get { return empresa; }
set {
if (empresa == value) return;
empresa = value;
RaisePropertyChanged("Empresa");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string empresa)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Empresa"));
}
private void EmpresaViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
CompanyValidator validator = new();
this.ValidationResult = validator.Validate(empresa);
}
但是当 XAML 中的属性更改时,该集合不会触发
<TextBox Header="Nome Simplificado"
MinWidth="200"
HorizontalAlignment="Left"
LostFocus="TextBox_LostFocus"
TextChanging="TextBox_TextChanging"
Text="{Binding Empresa.SimplifiedName, Mode=TwoWay,
UpdateSourceTrigger=Default}"
/>
有谁知道如何让它工作? (Ps。当我实例化该类的新对象时,事件会触发)。
【问题讨论】:
-
您遗漏了重要的代码。你注册/附加
EmpresaViewModel_PropertyChanged了吗? -
什么是
SimplifiedName? -
@JeroenvanLangen,对于第一个问题,是的,我只是没有发布那部分代码,以免使其太大而无法阅读。 SimplifiedName 是 Empresa 类/模型中的属性
-
属性变更注册可能会注册在
Empresa对象上,而不是模型上。 -
目前还不清楚您要在这里完成什么,但由于您绑定到
SimplifiedName,您可能想要处理此属性的PropertyChanged事件。在TextBox中输入内容时不会设置Empresa。