【发布时间】:2020-09-30 10:31:57
【问题描述】:
我目前正在使用来自https://github.com/xabre/xamarin-bluetooth-le 的示例应用程序,它实时显示来自传感器的数据。我现在的目标是用这些数据显示一个图表,所以我使用的是 Microcharts 包。将以下代码与静态数据一起使用(并将列表声明为静态)时,图表工作正常,但是,当我尝试使用实时数据 (CharacteristicValue) 时出现错误:
错误 CS0120 非静态字段、方法或属性“CharacteristicDetailViewModel.entries”需要对象引用
错误 CS0236 字段初始化程序无法引用非静态字段、方法或属性“CharacteristicDetailViewModel.CharacteristicValueTemp”
我知道发生这种情况是因为数据在变化,但我想知道是否有任何解决方法可以用来实时显示数据?
在我的 ViewModel 中,我有:
public List<ChartEntry> entries = new List<ChartEntry>
{
new ChartEntry(CharacteristicValue)
{
Color=SKColor.Parse("#FF1943"),
Label ="January",
ValueLabel = "200"
},
new ChartEntry(400)
{
Color = SKColor.Parse("00BFFF"),
Label = "March",
ValueLabel = "400"
},
};
在 .xaml.cs 文件中:
public CharacteristicDetailPage()
{
InitializeComponent();
ChartTest.Chart = new LineChart()
{
Entries = CharacteristicDetailViewModel.entries,
LineMode = LineMode.Straight,
LineSize = 8,
PointMode = PointMode.Square,
PointSize = 18,
};
}
(是的,我知道这个图表现在没有意义,我只是想在它变得更复杂之前进行更新)
谢谢! :)
【问题讨论】:
-
我认为最终您必须重新绑定数据,因此不需要静态列表。然后你只需使用模型绑定等。也看看这里:github.com/dotnet-ad/Microcharts/issues/30
-
static 和 readonly 不是一回事。我认为您在这里混淆了两者。静态列表可以更改其内容。除非您也将其声明为只读。
-
@Isparia 嗨,你曾经让这段代码工作吗?我已经尝试了几十次,但我从来没有得到“myApi”应该是什么,我尝试了很多变量,但 GetValuesAssync() 没有任何作用。我试图只使用 float[] 作为值,但屏幕上没有图表
-
你需要将被调用的成员设为静态。
标签: c# visual-studio xamarin xamarin.forms viewmodel