我在Xamarin有一个Mac桌面应用程序。
有一个KVO模型,UI使用界面构建器绑定。
我还会监听模型中值的更改,并在更改时,通过串行端口连接使用新值更新连接的硬件。
我遇到的问题是滑块。滑块上的绑定值会在滑块的每个步骤上更新,而不是在用户释放滑块时更新。我希望这样我可以更新显示值的文本字段,但我不希望它在发布之前触发我的处理程序。
我可以将滑块设置为continuous = false
,这可以解决处理程序问题,但文本字段只会在发布时更新。
我无法看到将绑定配置为在用户完成滑动后触发,或者是一种限制绑定回调的方法,因此它只在给定的时间范围内运行一次。
以下是我目前的设置.....
在“设置模型”
中[Register("SettingsModel")]
public class CameraSettingsModel : NSObject
{
Export("GainMode")]
public int GainMode { get; set; }
}
界面构建器设置
在我的视图控制器中......
手动使变量保持Settings
模型符合KVO标准。 (Settings
模型根据用户设置换出不同的模型,因此需要触发WillChange等以使绑定刷新)
private CameraSettingsModel _settings;
[Export("Settings")]
public CameraSettingsModel Settings
{
get
{
return _settings;
}
set
{
WillChangeValue("Settings");
_settings = value;
DidChangeValue("Settings");
}
}
聆听变化
Settings.AddObserver("GainValue", NSKeyValueObservingOptions.New, updateGainValue);
更新硬件
private void updateGainValue(NSObservedChange obj)
{
//update the hardware here
}