我在哪里可以找到 windows phone 应用程序中页面-class 的实例

Where can I find the instance of a page-class in a windows phone app

我目前正在为 windows phone 8.1 编写应用程序。我在这个项目中有一些页面 classes 和一个普通的 C# class。 我目前正在处理的页面上有一些文本框、组合框和一个按钮。

我想在用户向所有文本框和组合框输入内容时启用该按钮。所以我在 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

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

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

这带来了 ParameterCompleted(bool) 不是静态的问题。所以我需要一个 class SupplyParameter 的实例。 但是不想创建它的新实例,因为这会在 2 classes.

之间带来无限循环

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

如果你四处移动,你可以在你的 SupplyParameter 页面中有一个(非静态)Variables 成员并将 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;
    }
}