【发布时间】:2019-08-22 20:41:53
【问题描述】:
我已经为 SyncFusion 中的图表创建了一个 List 对象。我在列表创建结束时执行了一个计算,该计算得到列表中一个对象的最小值(即“关闭”),并将其归因于一个名为“AxisMinimum”的变量。效果很好。
我现在需要获取该变量的值并将其传递给另一个方法,然后该方法可以使用它并对图表进行调整。该方法称为“NumbericalAxis_ActualRangeChanged”。
尝试在“NumbericalAxis_ActualRangeChanged”方法中使用 AxisMinimum 会产生错误,因为它在当前上下文中不存在。使用 Messaging.Center 方法是否合适或有更好的方法?
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void NumericalAxis_ActualRangeChanged(object sender, ActualRangeChangedEventArgs e)
{
e.ActualMinimum = AxisMinimum;
}
}
public class SaleInfo
{
public string date { get; set; }
public string minute { get; set; }
public string label { get; set; }
public double high { get; set; }
public double low { get; set; }
public double open { get; set; }
public double close { get; set; }
public double average { get; set; }
public int volume { get; set; }
public double notional { get; set; }
public int numberOfTrades { get; set; }
}
public class SalesViewModel
{
public List<SaleInfo> SalesData { get; set; }
public SalesViewModel()
{
SalesData = new List<SaleInfo>();
SalesData.Add(new SaleInfo { date = "2019-08-16", minute = "09:30", label = "09:30 AM", high = 204.84, low = 204.05, open = 204.3, close = 904.75, average = 204.508, volume = 8709, notional = 1781061.51, numberOfTrades = 69 });
SalesData.Add(new SaleInfo { date = "2019-08-16", minute = "09:31", label = "09:31 AM", high = 204.8, low = 204.46, open = 204.8, close = 904.5, average = 204.622, volume = 5783, notional = 1183329.75, numberOfTrades = 58 });
SalesData.Add(new SaleInfo { date = "2019-08-16", minute = "09:32", label = "09:32 AM", high = 204.72, low = 204.34, open = 204.46, close = 904.36, average = 204.548, volume = 4468, notional = 913920.6, numberOfTrades = 50 });
SalesData.Add(new SaleInfo { date = "2019-08-16", minute = "09:33", label = "09:33 AM", high = 204.41, low = 204.06, open = 204.39, close = 904.06, average = 204.243, volume = 1834, notional = 374581.99, numberOfTrades = 22 });
double AxisMinimum = SalesData.Min(SaleInfo => SaleInfo.close);
}
}
【问题讨论】:
-
只需将 AxisMinimum 定义为 VM 上的公共属性,然后您就可以从其他类中引用它
-
使用消息中心,你的虚拟机不应该像在其他视图模型中那样直接相互通信。提供它是有充分理由的;允许发布者在不知道任何接收者的情况下发送消息,反之亦然。
-
嗨 Jason,如果我在 VM 中将 AxisMinimum 定义为 public,然后转到 NumericalAxis_ActualRangeChanged 方法,AxisMinimum 会生成一个错误,它在当前上下文中不存在。
标签: c# xamarin syncfusion