我目前正在为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
的实例。
但是不想创建它的新实例,因为这会在两个类之间产生无限循环。
我想必须有一个实例,它是在加载页面时创建的。但这个例子在哪里?或者如何在没有实例的情况下调用此方法?
答案 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;
}
}