event.PropertyEvent 类
命名空间: event
属性事件的数据
描述
属性
示例
侦听属性事件
使用 PropOne GetObservable 和 SetObservable 属性定义 propEventClass 类,以便观察属性事件。类构造函数为这些事件添加侦听程序。
classdef propEventClass < handle % Class to observe property events properties (GetObservable,SetObservable) PropOne string = "default" end methods function obj = propEventClass addlistener(obj,'PropOne','PreGet',@propEventHandler); addlistener(obj,'PropOne','PostSet',@propEventHandler); end end end
propEventHandler 函数用作 PreGet 和 PostSet 事件的回调。
event.PropertyEvent 对象的 Source 属性包含 PropOne 的 matlab.metadata.Property 对象。访问 matlab.metadata.Property Name 属性以获取触发事件的属性的名称。当回调处理多个属性时,请切换属性名称。
event.PropertyEvent 对象的 EventName 属性包含事件的名称。要从回调处理多个属性事件,请基于事件名称应用 switch 语句。
function propEventHandler(~,eventData) switch eventData.Source.Name % Get property name case 'Prop1' switch eventData.EventName % Get the event name case 'PreGet' fprintf('%s\n','***PreGet triggered***') case 'PostSet' fprintf('%s\n','***PostSet triggered***') disp(eventData.AffectedObject.(eventData.Source.Name)); end end end
引用 PropOne 属性值会引发 propEventHandler 的 PreGet 事件响应。
obj = propEventClass; obj.PropOne
***PreGet triggered***
ans =
"default"为 PropOne 属性赋值会引发 propEventHandler 的 PostSet 事件响应。
由于回调会获取属性值以在 PostSet 事件后显示新值,因此会触发 PreGet 事件。此外,由于赋值语句不以分号结束,MATLAB 将获取属性值以在命令行窗口中显示该对象,这会再次触发 PreGet 事件。
obj.PropOne = "New string"***PostSet triggered***
***PreGet triggered***
New string
obj =
***PreGet triggered***
propEventClass with properties:
PropOne: "New string"
版本历史记录
在 R2008a 中推出