How to Binding only RPM Value SfCircularGauge?
Models/Data.cs
namespace Super.Models
{
public class Data
{
public int Rpm { get; set; }
public int Kph { get; set; }
public double Afr1 { get; set; }
public double Afr2 { get; set; }
public double Hp { get; set; }
public double Torque { get; set; }
public string RpmStatus { get; set; }
public string ElectricalStatus { get; set; }
public string Afr1Status { get; set; }
public string Afr2Status { get; set; }
public string RemoteStatus { get; set; }
public string SpeedStatus { get; set; }
}
}
ViewModels/DashboardPageViewModel.cs
using BRTSuperDyno.Models;
using System.Collections.ObjectModel;
namespace Super.ViewModels
{
class DashboardPageViewModel : BaseViewModel
{
public ObservableCollection<Data> data { get; set; }
#region CONSTRUCTOR
public DashboardPageViewModel()
{
data = new ObservableCollection<Data>
{
new Data { Rpm = 10,
Kph = 10,
Afr1 = 10,
Afr2 = 10,
Hp = 10,
Torque = 10,
RpmStatus = "Red",
ElectricalStatus = "Red",
Afr1Status = "Red",
Afr2Status = "Red",
RemoteStatus = "Red",
SpeedStatus = "Red"},
new Data { Rpm = 20,
Kph = 20,
Afr1 = 20,
Afr2 = 20,
Hp = 20,
Torque = 20,
RpmStatus = "Green",
ElectricalStatus = "Green",
Afr1Status = "Green",
Afr2Status = "Green",
RemoteStatus = "Green",
SpeedStatus = "Green"}
};
}
#endregion
public Data DataItem
{
set
{
Rpm = value.Rpm;
Kph = value.Kph;
Afr1 = value.Afr1;
Afr2 = value.Afr2;
Hp = value.Hp;
Torque = value.Torque;
RpmStatus = value.RpmStatus;
ElectricalStatus = value.ElectricalStatus;
Afr1Status = value.Afr1Status;
Afr2Status = value.Afr2Status;
RemoteStatus = value.RemoteStatus;
SpeedStatus = value.SpeedStatus;
OnPropertyChanged();
}
}
int _rpm;
public int Rpm
{
set
{
if (value != _rpm)
{
_rpm = value;
OnPropertyChanged();
}
}
get => _rpm;
}
int _kph;
public int Kph
{
set
{
if (value != _kph)
{
_kph = value;
OnPropertyChanged();
}
}
get => _kph;
}
double _afr1;
public double Afr1
{
set
{
if (value != _afr1)
{
_afr1 = value;
OnPropertyChanged();
}
}
get => _afr1;
}
double _afr2;
public double Afr2
{
set
{
if (value != _afr2)
{
_afr2 = value;
OnPropertyChanged();
}
}
get => _afr2;
}
double _hp;
public double Hp
{
set
{
if (value != _hp)
{
_hp = value;
OnPropertyChanged();
}
}
get => _hp;
}
double _torque;
public double Torque
{
set
{
if (value != _torque)
{
_torque = value;
OnPropertyChanged();
}
}
get => _torque;
}
string _rpmStatus;
public string RpmStatus
{
set
{
if (value != _rpmStatus)
{
_rpmStatus = value;
OnPropertyChanged();
}
}
get => _rpmStatus;
}
string _electricalStatus;
public string ElectricalStatus
{
set
{
if (value != _electricalStatus)
{
_electricalStatus = value;
OnPropertyChanged();
}
}
get => _electricalStatus;
}
string _afr1Status;
public string Afr1Status
{
set
{
if (value != _afr1Status)
{
_afr1Status = value;
OnPropertyChanged();
}
}
get => _afr1Status;
}
string _afr2Status;
public string Afr2Status
{
set
{
if (value != _afr2Status)
{
_afr2Status = value;
OnPropertyChanged();
}
}
get => _afr2Status;
}
string _remoteStatus;
public string RemoteStatus
{
set
{
if (value != _remoteStatus)
{
_remoteStatus = value;
OnPropertyChanged();
}
}
get => _remoteStatus;
}
string _speedStatus;
public string SpeedStatus
{
set
{
if (value != _speedStatus)
{
_speedStatus = value;
OnPropertyChanged();
}
}
get => _speedStatus;
}
}
}
View/DashboardPage.xaml
"1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:gauge="clr-namespace:Syncfusion.SfGauge.XForms;assembly=Syncfusion.SfGauge.XForms"
xmlns:viewModels="clr-namespace:Super.ViewModels;assembly=Super"
x:Class="Super.Views.DashboardPage">
<ContentPage.BindingContext>
<viewModels:DashboardPageViewModel/>
ContentPage.BindingContext>
<StackLayout Margin="20" VerticalOptions="StartAndExpand" >
<gauge:SfCircularGauge VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Margin="10">
<gauge:SfCircularGauge.Headers>
<gauge:Header Text="Speedometer" ForegroundColor="Black" TextSize="20" />
gauge:SfCircularGauge.Headers>
<gauge:SfCircularGauge.Scales>
<gauge:Scale>
<gauge:Scale.Ranges>
<gauge:Range StartValue="0" EndValue="40"/>
gauge:Scale.Ranges>
<gauge:Scale.Pointers>
<gauge:NeedlePointer Value="{Binding Rpm }" />
gauge:Scale.Pointers>
gauge:Scale>
gauge:SfCircularGauge.Scales>
gauge:SfCircularGauge>
StackLayout>
ContentPage>
|
</gauge:Scale.Ranges>
<gauge:Scale.Pointers>
<gauge:NeedlePointer Value="{Binding data[0].Rpm}" />
<gauge:NeedlePointer Value="{Binding data[1].Rpm}" />
</gauge:Scale.Pointers> |