Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将列表中的值传递给方法?信息中心?_C#_Xamarin_Syncfusion - Fatal编程技术网

C# 如何将列表中的值传递给方法?信息中心?

C# 如何将列表中的值传递给方法?信息中心?,c#,xamarin,syncfusion,C#,Xamarin,Syncfusion,我已经为SyncFusion中的图表创建了一个列表对象。我在列表创建结束时执行了一个计算,该计算得到列表中一个对象的最小值(即“close”),并将其归因于一个名为“Axismimum”的变量。那很好 我现在需要获取该变量的值,并将其传递到另一个方法中,然后使用该方法对图表进行调整。该方法称为“NumbericalAxis_ActualRangeChanged” 尝试在“NumbericalAxis\u ActualRangeChanged”方法中使用Axismimum会产生错误,因为它在当前上

我已经为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将生成一个在当前上下文中不存在的错误。