如何解决在静态方法中使用非静态值?
我目前正在使用https://github.com/xabre/xamarin-bluetooth-le中的示例应用程序,该应用程序实时显示来自传感器的数据。我现在的目标是显示带有此数据的图表,因此我正在使用microcharts包。当将以下代码与静态数据一起使用(并将List声明为静态)时,图表可以正常工作,但是,当我尝试使用实时数据(CharacteristicValue)时,出现错误:
错误CS0120非静态字段,方法或属性'CharacteristicDetailviewmodel.entries'需要对象引用
错误CS0236字段初始化程序无法引用非静态字段,方法或属性'CharacteristicDetailviewmodel.CharacteristicValueTemp'
我知道发生这种情况是因为数据在变化,但是我想知道是否可以使用任何解决方法来实时显示数据?
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,};
}
(是的,我知道此图表现在没有任何意义,我只是想在更新变得更复杂之前就做好更新工作了)
谢谢! :)
解决方法
CharacteristicDetailViewModel.entries
不是静态成员。您需要一个CharacteristicDetailViewModel
的具体实例:
var myCharacteristicDetailVM = /*some initializing or retrieval logic of a concrete instance of the VM*/
然后:
ChartTest.Chart = new LineChart()
{
Entries = myCharacteristicDetail.entries /*a concrete instance of the VM*/,LineMode = LineMode.Straight,LineSize = 8,PointMode = PointMode.Square,PointSize = 18,};
也就是说,您似乎对static
在c#中的实际含义有深刻的误解。我建议您阅读有关here的主题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。