public class MyAxis : NumericalAxis
{
private TrendGraphViewModel _viewModel;
protected override void OnCreateLabels()
{
base.OnCreateLabels();
VisibleLabels.Clear();
VisibleLabels.Add(new ChartAxisLabel((double)_viewModel.UserSettings.UpperTarget, _viewModel.UserSettings.UpperTarget.ToString()));
VisibleLabels.Add(new ChartAxisLabel((double)_viewModel.UserSettings.LowerTarget, _viewModel.UserSettings.LowerTarget.ToString()));
}
protected override void OnBindingContextChanged()
{
// since these properties are not technically children, the inheritedBindingContext needs to be manually set
base.OnBindingContextChanged();
_viewModel = BindingContext as MyViewModel;
_viewModel.UserSettings.PropertyChanged += UserSettingsOnPropertyChanged;
}
private void UserSettingsOnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_viewModel.UserSettings.UpperTarget) ||
e.PropertyName == nameof(_viewModel.UserSettings.LowerTarget))
{
// TODO: What to do here? Calling OnCreateLabels() doesn't refresh the Axis
OnCreateLabels();
}
}
}
|
private void UserSettingsOnPropertyChanged(object sender, PropertyChangedEventArgs e)
{ if (e.PropertyName == nameof(_viewModel.UserSettings.UpperTarget) || e.PropertyName == nameof(_viewModel.UserSettings.LowerTarget)) { var Data = _viewModel.ChartData; _viewModel.ChartData = null;
_viewModel.ChartData = Data; } } |
|
private void UserSettingsOnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_viewModel.UpperTarget) ||
e.PropertyName == nameof(_viewModel.LowerTarget))
{
var data = _viewModel.Data;
_viewModel.Data = null;
_viewModel.Data = data;
OnCreateLabels();
}
} |