Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
C# 在静态方法中使用非静态值?_C#_Visual Studio_Xamarin_Xamarin.forms_Viewmodel - Fatal编程技术网

C# 在静态方法中使用非静态值?

C# 在静态方法中使用非静态值?,c#,visual-studio,xamarin,xamarin.forms,viewmodel,C#,Visual Studio,Xamarin,Xamarin.forms,Viewmodel,我目前正在使用来自的示例应用程序,它实时显示来自传感器的数据。我现在的目标是用这些数据显示一个图表,所以我使用Microcharts包。当使用以下代码处理静态数据(并将列表声明为静态)时,图表工作正常,但是,当我尝试使用实时数据(CharacteristicValue)时,会出现错误: 错误CS0120非静态字段、方法或属性“CharacteristicDetailViewModel.entries”需要对象引用 错误CS0236字段初始值设定项无法引用非静态字段、方法或属性“Character

我目前正在使用来自的示例应用程序,它实时显示来自传感器的数据。我现在的目标是用这些数据显示一个图表,所以我使用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"
         },

     };
(是的,我知道这个图表现在毫无意义,我只是想在它变得更复杂之前进行更新)


谢谢!:)

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,
};

也就是说,您似乎对c#中的
static
的实际含义有着深刻的误解。我建议你仔细阅读这个主题。

我认为最后你必须重新绑定数据,因此不需要静态列表。然后您只需使用模型绑定ect。再看看这里:静态和只读不是一回事。我想你把这两个搞混了。静态列表可以更改其内容。除非您还声明它为只读。@Isparia您好,您是否能够使此代码正常工作?我已经尝试了几十次,但是我从来没有得到“myApi”应该是什么,我尝试了很多变量,但是GetValuesAssync()没有任何效果。我试着只使用float[]作为值,但屏幕上没有图表。您需要将被调用的成员设置为静态。您好,我不太清楚您所说的VM的具体实例的初始化或检索逻辑是什么意思,但我假设是var myCharacteristicDetailVM=new CharacteristicDetailViewModel();?我记得在过去的一些绑定教程中,我本应该在某个时候编写这个,但是,由于我使用蓝牙,这个功能实际上需要一个适配器,所以我仍然无法使它工作:s(完整视图模型)
ChartTest.Chart = new LineChart() 
{
    Entries = myCharacteristicDetail.entries /*a concrete instance of the VM*/, 
    LineMode = LineMode.Straight,
    LineSize = 8,
    PointMode = PointMode.Square,
    PointSize = 18,
};