How to set value Circular Gauge only one value ?

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>

1 Reply

VR Vignesh Ramesh Syncfusion Team November 23, 2021 11:37 AM UTC

Hi Muhammad Syahrial, 

Greetings from Syncfusion. 

We have checked your query along with provided snippet and would like to inform you that, you have set DataContext as DashboardPageViewModel and the Rpm property is exist in the Data class. So, you can bind it like the below snippet. 

XAML: 
</gauge:Scale.Ranges> 
        <gauge:Scale.Pointers> 
    <gauge:NeedlePointer  Value="{Binding data[0].Rpm}" /> 
    <gauge:NeedlePointer  Value="{Binding data[1].Rpm}" /> 
</gauge:Scale.Pointers> 

Output: 
 

Please find the modified sample from the below link. 

Please let us know if you have any further assistance. 

Regards, 
Vignesh Ramesh.

Loader.
Up arrow icon