C# 如何将列表中的值传递给方法?信息中心?
我已经为SyncFusion中的图表创建了一个列表对象。我在列表创建结束时执行了一个计算,该计算得到列表中一个对象的最小值(即“close”),并将其归因于一个名为“Axismimum”的变量。那很好 我现在需要获取该变量的值,并将其传递到另一个方法中,然后使用该方法对图表进行调整。该方法称为“NumbericalAxis_ActualRangeChanged” 尝试在“NumbericalAxis\u ActualRangeChanged”方法中使用Axismimum会产生错误,因为它在当前上下文中不存在。使用消息中心方法是合适的还是有更好的方法C# 如何将列表中的值传递给方法?信息中心?,c#,xamarin,syncfusion,C#,Xamarin,Syncfusion,我已经为SyncFusion中的图表创建了一个列表对象。我在列表创建结束时执行了一个计算,该计算得到列表中一个对象的最小值(即“close”),并将其归因于一个名为“Axismimum”的变量。那很好 我现在需要获取该变量的值,并将其传递到另一个方法中,然后使用该方法对图表进行调整。该方法称为“NumbericalAxis_ActualRangeChanged” 尝试在“NumbericalAxis\u ActualRangeChanged”方法中使用Axismimum会产生错误,因为它在当前上
[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);
}
}
[DesignTimeVisible(false)]
公共部分类主页:ContentPage
{
公共主页()
{
初始化组件();
}
私有void NumericalAxis\u实际更改范围(对象发送方,实际更改范围Deventargs e)
{
e、 实际最小值=最小值;
}
}
公共类销售信息
{
公共字符串日期{get;set;}
公共字符串分钟{get;set;}
公共字符串标签{get;set;}
公共双高{get;set;}
公共双低位{get;set;}
公共双开{get;set;}
公共双关闭{get;set;}
公共双平均{get;set;}
公共int卷{get;set;}
公共双概念{get;set;}
public int numberOfTrades{get;set;}
}
公共类SalesViewModel
{
公共列表SalesData{get;set;}
public SalesViewModel()
{
SalesData=新列表();
SalesData.Add(新销售信息{date=“2019-08-16”,minute=“09:30”,label=“09:30 AM”,高=204.84,低=204.05,开盘=204.3,收盘=904.75,平均=204.508,成交量=8709,名义=1781061.51,交易次数=69});
SalesData.Add(新SaleInfo{date=“2019-08-16”,minute=“09:31”,label=“09:31 AM”,高=204.8,低=204.46,开盘=204.8,收盘=904.5,平均=204.622,成交量=5783,名义=1183329.75,交易次数=58});
SalesData.Add(新SaleInfo{date=“2019-08-16”,minute=“09:32”,label=“09:32 AM”,高=204.72,低=204.34,开盘=204.46,收盘=904.36,平均=204.548,成交量=4468,名义=913920.6,交易数量=50});
SalesData.Add(新SaleInfo{date=“2019-08-16”,minute=“09:33”,label=“09:33 AM”,高=204.41,低=204.06,开盘=204.39,收盘=904.06,平均=204.243,成交量=1834,名义=374581.99,交易次数=22});
double Axismimum=SalesData.Min(SaleInfo=>SaleInfo.close);
}
}
谢谢你,这就成功了。使用以下代码使其工作
public void NumericalAxis_ActualRangeChanged(object sender, ActualRangeChangedEventArgs e)
{
SalesViewModel p = new SalesViewModel();
e.ActualMinimum = p.AxisMinimum;
}
通过创建SalesViewModel对象的实例,我可以获取该变量并使用它。谢谢。在上述解决方案中,没有为您提供正确的AxisMinium值(SaleInfo中Close属性值的最小值)。因为每次您都在创建SalesViewModel的新实例
SalesViewModel p=新的SalesViewModel()代码>
它已由
public void NumericalAxis_ActualRangeChanged(object sender,ActualRangeChangedEventArgs e){
SalesViewModel p = (sender as Axis).BindingContext as SalesViewModel;
if(p != null )
{
e.ActualMinimum = p.AxisMinimum;
}}
只需将Axismimum定义为VM上的公共属性,然后您就可以从其他类引用它。使用消息中心,您的VM不应该像在其他viewmodels中那样直接相互通信。它的提供有一个很好的理由;为了允许发布者在不知道任何接收者的情况下发送消息,Hi Jason,如果我在VM中将AxisMinimum定义为public,然后转到NumericalAxis\u ActualRangeChanged方法,AxisMinimum将生成一个在当前上下文中不存在的错误。