如果PropertyChanged _colors中的相应项正在更改,那么是否可以指示Fody为属性、Color1和Color2生成ObservableCollection事件?
public class MyModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public Brush Color1 => _colors[0];
public Brush Color2 => _colors[1];
private ObservableCollection<Brush> _colors;
public MyModel()
{
_colors = new ObservableCollection<Brush>()
{
Brushes.Transparent,
Brushes.Black,
};
}
public void DoSomething()
{
_colors[0] = Brushes.Green;
_colors[1] = Brushes.Red;
}
protected void OnPropertyChanged(PropertyChangedEventArgs eventArgs)
{
PropertyChanged?.Invoke(this, eventArgs);
}
}对于Name属性,将生成事件,但不生成Color1和Color2 (参见从ILSpy提取):
public string Name
{
[CompilerGenerated]
get
{
return <Name>k__BackingField;
}
[CompilerGenerated]
set
{
if (!string.Equals(<Name>k__BackingField, value, StringComparison.Ordinal))
{
<Name>k__BackingField = value;
OnPropertyChanged(<>PropertyChangedEventArgs.Name);
}
}
}
public Brush Color1 => _colors[0];
public Brush Color2 => _colors[1];发布于 2022-11-24 21:47:29
目前,Color1和Color2是只读属性,因此不需要为它们生成PropertyChanged事件。您需要的是在设置字段A时为属性b触发事件的代码。我怀疑任何代码生成器都会这样做(字段没有setter,需要调用事件)。
Fody文档声明
实现INotifyPropertyChanged的所有类都会将通知代码注入属性设置程序。
因此,您最好的尝试是使用私有设置器创建属性(并删除字段_color1&2)。
https://stackoverflow.com/questions/74564968
复制相似问题