Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.ios 图表的sfChart重置数据_Xamarin.ios_Syncfusion - Fatal编程技术网

Xamarin.ios 图表的sfChart重置数据

Xamarin.ios 图表的sfChart重置数据,xamarin.ios,syncfusion,Xamarin.ios,Syncfusion,我在“细节”视图中有一个图表。当在tableview中选择一个项时,将访问该项。第一个图形是正确的,但是当我在表中选择另一项时,它仍然显示第一个图形。我启用了ListenPropertyChange=true和raispropertychange两次 视图(viewdidload): 视图模型(初始): CoinHistory=newobserveCollection(_CoinHistoryGraph.Select(x=>newchartDataModel(float.Parse(x.pric

我在“细节”视图中有一个图表。当在tableview中选择一个项时,将访问该项。第一个图形是正确的,但是当我在表中选择另一项时,它仍然显示第一个图形。我启用了
ListenPropertyChange=true
raispropertychange
两次

视图(viewdidload):

视图模型(初始):

CoinHistory=newobserveCollection(_CoinHistoryGraph.Select(x=>newchartDataModel(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);
        }
    }
private-observeCollection\u-CoinHistory;
公共可观测收集历史
{
得到
{
返回历史;
}
设置
{
_历史=价值;
RaisePropertyChanged(()=>CoinHistory);
}
}

如何将模型数据传递到详细信息视图?根据您的描述,第一个ViewModel应该保存整个数据。当用户单击一个单元格时,将触发tableView源的
SelectionChangedCommand
事件。通常我们将此命令绑定到相应的ViewModel命令,然后我们可以配置推送并在那里传递参数

这是我在第一个视图中的绑定,其中包含一个
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();
然后,第二个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;
    }
}
公共类SecondViewModel:MvxViewModel { 私人名单(历史);; 公共列表历史 { 得到 { 返回历史; } 设置 { _历史=价值; RaisePropertyChanged(()=>CoinHistory); } } 公共覆盖无效准备(项参数) { CoinHistory=parameter.SingleCoinHistory; } } 最后,如果您已成功将其绑定到第二个视图模型,则详细信息视图将显示
CoinHistory


这是我的演示供您参考。

我无法复制您在此处陈述的问题,而是根据您的要求准备了一个样本,您可以从下面的链接中找到样本

如果这不能解决您的查询,您可以将更多详细信息回复给我

希望这有帮助


注意:我为Syncfusion工作。

您在哪里调用了
CoinHistory=newobserveCollection(_CoinHistoryGraph.Select(x=>newChartDataModel(float.Parse(x.price_btc),x.timestamp))
,如果可能的话,您能提供示例让我们重现问题吗?@ColeXia MSFT我添加了viewModel属性,在初始化时它从api获取数据,并将它们写入ObservableCollection。@ColeXia MSFT这是一个示例,它是如何设置的我检查了示例,它通过每次单击事件创建CoinHistory,我认为您应该调用代码
CoinHistory=newobserveCollection(_CoinHistoryGraph.Select(x=>newChartDataModel(float.Parse(x.price_btc),x.timestamp))当您选择tableview项目时。@ColeXia MSFT自发布以来没有任何更改,我有类似的代码,但由于它与问题无关,我没有发布它。您检查过我的示例吗?我有不同的单元格显示不同的图形数据。
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();
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);
}
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;
    }
}