我在'详细'视图中有一个图表。在tableview中选择项目时可以访问此项。第一个图是正确的,但当我在表中选择另一个项时,它仍然显示第一个图。我启用了raispropertychanged
和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();
两次。
视图(viewDidLoad中):
CoinHistory = new ObservableCollection<ChartDataModel>(_CoinHistoryGraph.Select(x => new ChartDataModel(float.Parse(x.price_btc), x.timestamp)));
RaisePropertyChanged(() => CoinHistory);
视图模型(INIT):
private ObservableCollection<ChartDataModel> _CoinHistory;
public ObservableCollection<ChartDataModel> CoinHistory
{
get
{
return _CoinHistory;
}
set
{
_CoinHistory = value;
RaisePropertyChanged(() => CoinHistory);
}
}
ViewModel属性:
isOtherComponentShown
答案 0 :(得分:1)
如何将模型数据传递到详细信息视图?根据您的描述,第一个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();
当用户点击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
。
Here是我参考的演示。
答案 1 :(得分:0)
我无法复制您在此处说明的问题,而是根据您的要求准备了一个示例,您可以从以下链接中找到示例。
如果这不能解决您的查询,您能否将更多详细信息回复我。
希望这会有所帮助
注意:我为Syncfusion工作。