簡體   English   中英

在靜態方法中使用非靜態值?

[英]Using a non-static value in a static method?

我目前正在使用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# 中的實際含義有很深的誤解。 我建議你在這里閱讀這個主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM