如何在CommunityToolkit.MVVM的[ObservableProperty] setter中调用方法?
在CommunityToolkit.MVVM的[ObservableProperty] setter中调用方法的方案
使用CommunityToolkit.MVVM的源代码生成器时,要在属性值变更后执行自定义逻辑(比如调用LoadPerson),可以通过实现生成器自动创建的partial变更方法来实现:
- 源代码生成器会为标记
[ObservableProperty]的字段自动生成一个名为On[PropertyName]Changed的partial方法,该方法会在属性值成功变更后触发。 - 在ViewModel中手动实现这个partial方法,在方法内部调用你的
LoadPerson逻辑即可。
示例代码如下:
public partial class MainViewModel : ObservableObject { [ObservableProperty] string person; // 实现生成器自动创建的partial方法,属性变更后触发 partial void OnPersonChanged(string oldValue, string newValue) { LoadPerson(); } [RelayCommand] private void LoadPerson() { Person = "Hello World"; } }
补充说明
- partial方法的签名必须严格匹配:
partial void On[PropertyName]Changed(T oldValue, T newValue),其中T是属性的类型,参数可以根据需求选择使用(即使不用也要保留签名)。 - 如果需要在属性值变更前执行逻辑,可以实现对应的
On[PropertyName]Changingpartial方法。
内容的提问来源于stack exchange,提问作者Moha
相关产品推荐
相关产品推荐

