[英]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.