C# 以编程方式绑定到syncfusion指针

C# 以编程方式绑定到syncfusion指针,c#,xamarin,xamarin.forms,syncfusion,C#,Xamarin,Xamarin.forms,Syncfusion,我试图以编程方式将名为PointerValue的属性绑定到needpointer.Value上,但没有成功,但似乎在某个地方丢失了 xamarin应用程序基本上有一个仪表和一个启动按钮当按下启动按钮时,我启动计时器。定时器运行后,指针值应增加on。在XAML中很容易,但无法理解如何将其转换为代码这应该可以工作,尽管ValueProperty的实际名称可能会因needpointer的实现方式而异。第一个参数是绑定到的控件属性(目标)的名称,第二个参数是充当源的value属性的名称 needlePo

我试图以编程方式将名为
PointerValue
的属性绑定到
needpointer.Value
上,但没有成功,但似乎在某个地方丢失了


xamarin应用程序基本上有一个仪表和一个启动按钮当按下启动按钮时,我启动计时器。定时器运行后,指针值应增加on。在XAML中很容易,但无法理解如何将其转换为代码
这应该可以工作,尽管
ValueProperty
的实际名称可能会因
needpointer
的实现方式而异。第一个参数是绑定到的控件属性(目标)的名称,第二个参数是充当源的value属性的名称

needlePointer.SetBinding(NeedlePointer.ValueProperty, "PointerValue");
但是,如果希望UI动态更新,还需要对
BindingContext
实现
INotifyPropertyChanged


无需创建
BindableProperty

解决方案,因为@Jason告诉我,我需要一个实现
INotifyPropertyChanged
的模型,所以代码更改为

public class StopWatchViewModel : INotifyPropertyChanged
{
    public double PointerValue { get; set; }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class StopWatchPage : BaseContentPage
{
    private Timer timer;
    private readonly StopWatchViewModel model = new StopWatchViewModel();

    public StopWatchPage()
    {
        BindingContext = model;
        ...
        needlePointer.SetBinding(NeedlePointer.ValueProperty, 
          nameof(model.PointerValue));
        ...
    }

    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        model.PointerValue += 1;
    }
}
public class StopWatchViewModel : INotifyPropertyChanged
{
    public double PointerValue { get; set; }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class StopWatchPage : BaseContentPage
{
    private Timer timer;
    private readonly StopWatchViewModel model = new StopWatchViewModel();

    public StopWatchPage()
    {
        BindingContext = model;
        ...
        needlePointer.SetBinding(NeedlePointer.ValueProperty, 
          nameof(model.PointerValue));
        ...
    }

    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        model.PointerValue += 1;
    }
}