微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在静态方法中使用非静态值?

我目前正在使用https://github.com/xabre/xamarin-bluetooth-le中的示例应用程序,该应用程序实时显示来自传感器的数据。我现在的目标是显示带有此数据的图表,因此我正在使用microcharts包。当将以下代码与静态数据一起使用(并将List声明为静态)时,图表可以正常工作,但是,当我尝试使用实时数据(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,};
    }

(是的,我知道此图表现在没有任何意义,我只是想在更新变得更复杂之前就做好更新工作了)

谢谢! :)

解决方法

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 举报,一经查实,本站将立刻删除。