属性 更改为不触发 UWP
Property Changed not firing UWP
我正在尝试在 属性 对象更改时使用 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。当我实例化那个 class 的新对象时,事件触发)。
Property Changed not firing UWP
问题是 Text
属性 绑定路径是 Empresa
的 属性,而不是 Empresa 本身,你只需为 [ 实现 RaisePropertyChanged
=13=]实例,所以只在第一次创建Empresa时有效。
如果您想更新 Text
,您还需要为 SimplifiedName
属性.
实施
public class Empresa:INotifyPropertyChanged
{
private string _simplifiedName;
public string SimplifiedName
{
get { return _simplifiedName; }
set
{
if (_simplifiedName != value)
{
_simplifiedName = value;
RaisePropertyChanged("SimplifiedName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
更新文本
private void MyButton_Click(object sender, RoutedEventArgs e)
{
Empresa.SimplifiedName = "New Value";
}
我正在尝试在 属性 对象更改时使用 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。当我实例化那个 class 的新对象时,事件触发)。
Property Changed not firing UWP
问题是 Text
属性 绑定路径是 Empresa
的 属性,而不是 Empresa 本身,你只需为 [ 实现 RaisePropertyChanged
=13=]实例,所以只在第一次创建Empresa时有效。
如果您想更新 Text
,您还需要为 SimplifiedName
属性.
public class Empresa:INotifyPropertyChanged
{
private string _simplifiedName;
public string SimplifiedName
{
get { return _simplifiedName; }
set
{
if (_simplifiedName != value)
{
_simplifiedName = value;
RaisePropertyChanged("SimplifiedName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
更新文本
private void MyButton_Click(object sender, RoutedEventArgs e)
{
Empresa.SimplifiedName = "New Value";
}