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;
}
}