限制KVO绑定(Xamarin / Mac)

时间:2017-07-25 11:46:52

标签: c# xcode xamarin interface-builder xamarin.mac

我在Xamarin有一个Mac桌面应用程序。

有一个KVO模型,UI使用界面构建器绑定。

我还会监听模型中值的更改,并在更改时,通过串行端口连接使用新值更新连接的硬件。

我遇到的问题是滑块。滑块上的绑定值会在滑块的每个步骤上更新,而不是在用户释放滑块时更新。我希望这样我可以更新显示值的文本字段,但我不希望它在发布之前触发我的处理程序。

我可以将滑块设置为continuous = false,这可以解决处理程序问题,但文本字段只会在发布时更新。

我无法看到将绑定配置为在用户完成滑动后触发,或者是一种限制绑定回调的方法,因此它只在给定的时间范围内运行一次。

  • 一旦用户释放鼠标,您能触发绑定更新吗?
  • 有没有办法限制回调?
  • 听取UI事件更新硬件会更好吗?而不是绑定模型值的变化?

以下是我目前的设置.....

enter image description here

在“设置模型”

[Register("SettingsModel")]
public class CameraSettingsModel : NSObject
{
    Export("GainMode")]
    public int GainMode { get; set; }
}

界面构建器设置

Interface builder settings

在我的视图控制器中......

手动使变量保持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
    }

0 个答案:

没有答案