Xamarin Android Oxyplot 刷新不起作用
Xamarin Android Oxyplot refresh doesnt work
我在 Xamarin 中刷新 Oxyplot 图时遇到问题 Android。我正在使用 Model.InvalidatePlot(true) 但仍然不起作用。
在我的 ViewModel 中,我有 属性 PlotModel 和刷新方法,如下面的代码。 GroupSales 是我的 GroupSale 的 MvxObservableCollection。
public void RefreshTest()
{
GroupSales.Clear();
var groupSales = DemoData.GetGroupSaleList(_shop.Id);
groupSales.Add(new GroupSale()
{
Name = "Test",
Sum = 5555,
Color = Constants.DefaultColor
});
foreach (var item in groupSales)
{
GroupSales.Add(item);
}
Model = OxyPlotModelCreator.GetGroupSalesModel(GroupSales);
Model.InvalidatePlot(true);
}
private PlotModel _model;
public PlotModel Model
{
get { return _model; }
set
{
_model = value;
RaisePropertyChanged(() => Model);
}
}
在调用 RefreshTest 方法后,我的 MvxObservableCollection 和 Model 也更新了,但在视图中看起来仍然相同。仅当我更改移动方向时才会更新(因为我使用纵向和横向两个视图,因此再次初始化)但我需要在单击“刷新”按钮后刷新 PlotModel。
我已经尝试在 Android 片段和 Invalidete PlotView 和模型中调用此方法,如下所示:
Button button = _view.FindViewById<Button>(Resource.Id.refreshButton);
button.Click += delegate
{
ViewModel.RefreshTest();
if (plotView != null && ViewModel.Model != null)
{
plotView.InvalidatePlot(true);
plotView.Invalidate();
plotView.RefreshDrawableState();
plotView.Model.InvalidatePlot(true);
}
};
但还是不行....有人可以帮我吗?
编辑
我在 Fragment 中初始化模型是这样的:
var plotView = _view.FindViewById<PlotView>(Resource.Id.groupSalesModel);
if (plotView != null && ViewModel.Model != null)
{
plotView.Model = ViewModel.Model;
}
哦,我知道了...我只是像这样绑定片段:
var bindset = this.CreateBindingSet<GroupSalesFragment, GroupSalesViewModel>();
bindset.Bind(plotView).For(c => c.Model).To(vm => vm.Model);
bindset.Apply();
现在可以使用了....
我在 Xamarin 中刷新 Oxyplot 图时遇到问题 Android。我正在使用 Model.InvalidatePlot(true) 但仍然不起作用。
在我的 ViewModel 中,我有 属性 PlotModel 和刷新方法,如下面的代码。 GroupSales 是我的 GroupSale 的 MvxObservableCollection。
public void RefreshTest()
{
GroupSales.Clear();
var groupSales = DemoData.GetGroupSaleList(_shop.Id);
groupSales.Add(new GroupSale()
{
Name = "Test",
Sum = 5555,
Color = Constants.DefaultColor
});
foreach (var item in groupSales)
{
GroupSales.Add(item);
}
Model = OxyPlotModelCreator.GetGroupSalesModel(GroupSales);
Model.InvalidatePlot(true);
}
private PlotModel _model;
public PlotModel Model
{
get { return _model; }
set
{
_model = value;
RaisePropertyChanged(() => Model);
}
}
在调用 RefreshTest 方法后,我的 MvxObservableCollection 和 Model 也更新了,但在视图中看起来仍然相同。仅当我更改移动方向时才会更新(因为我使用纵向和横向两个视图,因此再次初始化)但我需要在单击“刷新”按钮后刷新 PlotModel。
我已经尝试在 Android 片段和 Invalidete PlotView 和模型中调用此方法,如下所示:
Button button = _view.FindViewById<Button>(Resource.Id.refreshButton);
button.Click += delegate
{
ViewModel.RefreshTest();
if (plotView != null && ViewModel.Model != null)
{
plotView.InvalidatePlot(true);
plotView.Invalidate();
plotView.RefreshDrawableState();
plotView.Model.InvalidatePlot(true);
}
};
但还是不行....有人可以帮我吗?
编辑
我在 Fragment 中初始化模型是这样的:
var plotView = _view.FindViewById<PlotView>(Resource.Id.groupSalesModel);
if (plotView != null && ViewModel.Model != null)
{
plotView.Model = ViewModel.Model;
}
哦,我知道了...我只是像这样绑定片段:
var bindset = this.CreateBindingSet<GroupSalesFragment, GroupSalesViewModel>();
bindset.Bind(plotView).For(c => c.Model).To(vm => vm.Model);
bindset.Apply();
现在可以使用了....