我在哪里可以在Windows Phone应用程序中找到页面类的实例

时间:2015-12-21 16:19:02

标签: c# windows-phone-8.1 static-methods

我目前正在为Windows Phone 8.1编写应用程序。我在这个项目中有一些页面类和一个普通的C#类。 在我正在处理的页面上有一些texbox,组合框和一个按钮。

我希望启用该按钮,当用户输入所有文本和组合框时。所以我在C#class Variables.cs 中设置了一个变量,例如他输入了一个我可以解析的数字,并在组合框中选择了一个项目。 Variables.cs 如下所示:

class Variables
{
    public static int iSelectedIndex = -1;

    private static void SupplyParameterReady()
    {
        if (tbSupply1 && tbSupply2 && unitSupply1 && unitSupply2)
        {
            SupplyParameter.ParameterCompleted(true);
        }
        else
        {
            SupplyParameter.ParameterCompleted(false);
        }
    }

    public static bool tbSupply1
    {
        get
        {
            return tbSupply1;
        }
        set
        {
            tbSupply1 = value;
            if (value)
                SupplyParameterReady();
        }
    }
}

每次设置变量true时,方法SupplyParameterReady()都会检查所有其他变量是否也是true

如果是这种情况,我想在我的页面类中调用方法ParameterCompleted(bool),如下所示:

public sealed partial class SupplyParameter : Page
{
    ...
    public void ParameterCompleted(bool ready)
    {
        btnSupplyCalculationGo.IsEnabled = ready;
    }
}

这会带来ParameterCompleted(bool)不是静态的问题。所以我需要有一个类SupplyParameter的实例。 但是不想创建它的新实例,因为这会在两个类之间产生无限循环。

我想必须有一个实例,它是在加载页面时创建的。但这个例子在哪里?或者如何在没有实例的情况下调用此方法?

1 个答案:

答案 0 :(得分:0)

如果你搬家,你可以在Variables页面内有一个(非静态)SupplyParameter成员,并将this传递给构造函数。它看起来像这样

class Variables
{
    public int iSelectedIndex = -1;

    public SupplyParameter _page;

    public Variables(SupplyParameter page)
    {
         _page = page;
    }

    private void SupplyParameterReady()
    {
        if (tbSupply1 && tbSupply2 && unitSupply1 && unitSupply2)
        {
            _page.ParameterCompleted(true);
        }
        else
        {
            _page.ParameterCompleted(false);
        }
    }

    public bool tbSupply1
    {
        get
        {
            return tbSupply1;
        }
        set
        {
            tbSupply1 = value;
            if (value)
                SupplyParameterReady();
        }
    }
}

public sealed partial class SupplyParameter : Page
{
    Variables _vars;

    public SupplyParameter()
    {
        vars = new Variables(this);
    }

    ...

    public void ParameterCompleted(bool ready)
    {
        btnSupplyCalculationGo.IsEnabled = ready;
    }
}