以编程方式启用Windows Phone 7应用程序中的禁用复选框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式启用Windows Phone 7应用程序中的禁用复选框相关的知识,希望对你有一定的参考价值。

我正在编写我的第一个特定于设备的应用程序,它是一个Windows Phone 7全景应用程序。我现在仍然忙于用户界面,因为我正在玩这些功能然后我偶然发现了一个我无法解决的问题。你看,我有两个复选框用于某种登录表单。一个是“记住我”,另一个是“自动登录”复选框。我想要的操作是,当我取消选中“记住我”时,我希望取消选中并禁用“自动登录”复选框。我能够做但反过来总是会导致错误。我以前编写简单的php Web应用程序和javascript,所以我有一些编程知识,但C#对我来说是相当新的。

private void RememberMe_Unchecked(object sender, RoutedEventArgs e)
{
    AutoSignIn.IsChecked = false;
    AutoSignIn.IsEnabled = false;
}

那一个有效,但这个没有:

private void RememberMe_Checked(object sender, RoutedEventArgs e)
{
    AutoSignIn.IsEnabled = true;
}

后者抛出“NullReferenceException未处理”错误。

我的XAML代码如下所示:

<CheckBox Content="Remember me" Height="71" Name="RememberMe" Unchecked="RememberMe_Unchecked" Checked="RememberMe_Checked" IsEnabled="True" IsChecked="True" />
<CheckBox Content="Sign me in automatically" Height="71" Name="AutoSignIn" IsEnabled="True" IsChecked="True" />

我做了一些研究,我的方法似乎是错的,但我不知道如何使它工作。

答案

如果没有XAML,我无法100%确定,但请确保您没有以编程方式设置IsChecked属性。执行此操作时,在页面上正确初始化所有内容之前,将调用IsChecked方法一次。所以Matt发布的代码有效:

<CheckBox Name="AutoSignIn" />
<CheckBox Name="RememberMe" Checked="RememberMe_Checked" Unchecked="RememberMe_Unchecked" />

以下不会(因为它尝试在页面完成初始化之前引用AutoSignIn框)

<CheckBox Name="AutoSignIn" />
<CheckBox Name="RememberMe" IsChecked="True" Checked="RememberMe_Checked" Unchecked="RememberMe_Unchecked" />

要解决此问题,您可以以编程方式而不是在XAML中设置IsChecked属性,或者可能还有其他方法可以让其他人指向您。

另一答案

你的代码适合我。

我使用了以下XAML的事件处理程序:

<CheckBox Name="AutoSignIn" />
<CheckBox Name="RememberMe" Checked="RememberMe_Checked" Unchecked="RememberMe_Unchecked" />

RememberMe_Checked上的错误是否被抛出?或者由于更改AutoSignIn的启用状态而设置的其他内容? 例如,您是否有任何可能影响此数据的数据绑定?

以上是关于以编程方式启用Windows Phone 7应用程序中的禁用复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式检测是不是在 Windows 桌面应用程序中启用/禁用了 javascript? (网络浏览器控件)

以编程方式更改HubSection Windows Phone

如何以编程方式更改 Windows Phone 中设置器值中的图像

如何让您的 Windows Phone 7.5 应用程序保持领先

Windows Phone 7 推送通知

Win32 API 函数以编程方式启用/禁用设备