sfChart сбросить данные для графа - PullRequest
0 голосов
/ 19 мая 2018

У меня есть график в подробном представлении.доступ к нему осуществляется при выборе элемента в виде таблицы.первый график верен, но когда я выбираю другой элемент в таблице, он все равно показывает первый график.Я включил ListenPropertyChange = true и raispropertychanged дважды.

view (viewdidload):

SFChart chart = new SFChart();
        chart.Frame = this.headerview.Frame;

        //Adding Primary Axis for the Chart.
        SFCategoryAxis primaryAxis = new SFCategoryAxis();
        chart.PrimaryAxis = primaryAxis;

        //Adding Secondary Axis for the Chart.
        SFNumericalAxis secondaryAxis = new SFNumericalAxis();
        chart.SecondaryAxis = secondaryAxis;

        SFLineSeries series = new SFLineSeries()
        {
            XBindingPath = "timestamp",

            YBindingPath = "price_btc",

            ListenPropertyChange = true
        };
        series.EnableTooltip = true;
        chart.Series.Add(series);
        set.Bind(series).For(s => s.ItemsSource).To(vm => vm.CoinHistory);
        set.Apply();

viewModel (init):

CoinHistory = new ObservableCollection<ChartDataModel>(_CoinHistoryGraph.Select(x => new ChartDataModel(float.Parse(x.price_btc), x.timestamp)));
        RaisePropertyChanged(() => CoinHistory);

Свойства ViewModel:

  private ObservableCollection<ChartDataModel> _CoinHistory;
    public ObservableCollection<ChartDataModel> CoinHistory
    {
        get
        {
            return _CoinHistory;
        }
        set
        {
            _CoinHistory = value;
            RaisePropertyChanged(() => CoinHistory);
        }
    }

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Мне не удалось воспроизвести проблему, о которой вы говорили здесь, вместо этого я подготовил образец на основе ваших требований, и вы можете найти образец по ссылке ниже.

Образец

Если это не решит ваш запрос, не могли бы вы отозвать меня с более подробной информацией.

Надеюсь, это поможет

Примечание: я работаю в Syncfusion.

0 голосов
/ 24 мая 2018

Как вы передаете данные вашей модели в подробный вид?Согласно вашим описаниям, первая ViewModel должна содержать все данные.Когда пользователь щелкает одну ячейку, срабатывает событие SelectionChangedCommand источника tableView.Обычно мы связываем эту команду с соответствующей командой ViewModel, затем мы можем сконфигурировать push и передать туда параметры.

Вот мое связывание в первом представлении, которое содержит UITableView:

var set = this.CreateBindingSet<FirstView, FirstViewModel>();

set.Bind(source).For(s => s.ItemsSource).To(vm => vm.ItemsGroup);
set.Bind(source).For(s => s.SelectionChangedCommand).To(vm => vm.ShowDetailsCommand);

set.Apply();

Когда пользователь щелкает одну ячейку в TableView, ShowDetailsCommand срабатывает в FirstViewModel:

private readonly Lazy<IMvxNavigationService> _navigationService = new Lazy<IMvxNavigationService>(Mvx.Resolve<IMvxNavigationService>);

private MvxCommand<Item> showDetailsCommand;
public ICommand ShowDetailsCommand
{
    get
    {
        return showDetailsCommand ?? (showDetailsCommand = new MvxCommand<Item>(showDetails));
    }
}
async void showDetails(Item item)
{
    // This item is bound to the ItemsSource through ItemsGroup
    await _navigationService.Value.Navigate<SecondViewModel, Item>(item);
}

Тогда вторая ViewModel может принять этот элемент через:

public class SecondViewModel : MvxViewModel<Item>
{
    private List<CoinHistoryModel> _CoinHistory;

    public List<CoinHistoryModel> CoinHistory
    {
        get
        {
            return _CoinHistory;
        }
        set
        {
            _CoinHistory = value;
            RaisePropertyChanged(() => CoinHistory);
        }
    }

    public override void Prepare(Item parameter)
    {
        CoinHistory = parameter.SingleCoinHistory;
    }
}

Наконец, в подробном представлении будет отображаться CoinHistory, если вы успешно связали его со второй моделью представления.

Здесь - это моя демонстрация, на которую вы ссылаетесь.

...