2010-10-15 8 views
4

Je suis en train d'écrire ma première application spécifique à un appareil qui est une application panoramique Windows Phone 7. Je suis actuellement encore occupé sur l'interface utilisateur que je suis en train de jouer avec les fonctionnalités, puis je suis tombé sur un problème que je ne pouvais pas résoudre. Vous voyez, j'ai deux cases à cocher pour une sorte de formulaire de connexion. L'un est un «Se souvenir de moi» et l'autre une case «Inscrivez-moi automatiquement». L'action que je souhaite est la suivante: lorsque je désélectionne Se souvenir de moi, je souhaite que la case à cocher Se connecter automatiquement soit désactivée et désactivée. Ce que je pouvais faire mais l'inverse provoque toujours une erreur. J'avais l'habitude d'écrire des applications web PHP simples et JavaScript, donc j'ai quelques connaissances en programmation, mais C# est assez nouveau pour moi.Activer par programmation une case à cocher désactivée dans une application Windows Phone 7

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

qu'on travaille, mais celui-ci ne fonctionne pas:

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

Ce dernier génère une erreur "NullReferenceException était non gérée".

Code Mon XAML ressemble à ceci:

<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" /> 

Je l'ai fait quelques recherches et mon approche semble être mal, mais je ne suis pas sûr de savoir comment le faire fonctionner.

+0

pouvez-vous poster votre xaml aussi? aiderait à résoudre votre problème –

+0

Mon XAML est similaire à celui de Matt Lacey ci-dessous, sauf que la propriété IsChecked est définie sur true pour les deux cases à cocher. Aucune erreur n'est générée lorsque je les laisse décochés. Je veux les mettre à vrai par défaut. Je pense aussi que cela pourrait causer un problème si le programme commence avec eux vérifié et l'utilisateur décide de décocher et de les vérifier à nouveau. Cela semble déclencher l'erreur. – DeVilFisCh

+0

Hey, jetez un coup d'oeil à ma réponse ci-dessous - si vous définissez IsChecked à true, l'événement se déclenche avant que la page ne construise complètement les cases à cocher, ce qui explique pourquoi vous obtenez une exception de référence nulle. J'espère que cela a du sens! –

Répondre

2

Sans le XAML, je ne peux pas être sûr à 100%, mais assurez-vous que vous ne définissez pas la propriété IsChecked par programme. Lorsque vous le faites, la méthode IsChecked sera appelée une fois avant que tout soit initialisé correctement sur la page. Ainsi, alors que le code affiché par Matt fonctionne:

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

Ce qui suit ne sera pas (parce qu'il essaie de référencer la boîte AutoSignIn avant que la page a terminé l'initialisation)

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

Pour résoudre ce problème, vous pouvez Définissez la propriété IsChecked par programmation au lieu de XAML, ou il y a peut-être un autre moyen de contourner ce problème que quelqu'un d'autre peut vous indiquer.

+0

Oui, cela a du sens.J'ai maintenant essayé de définir IsChecked à true pour les deux cases à cocher dans la méthode MainPage_Loaded au lieu de dans le code XAML et il fonctionne maintenant sans faille. C'est maintenant l'un des "Pourquoi n'ai-je pas pensé à ça?" moments pour moi. : P Merci beaucoup! – DeVilFisCh

+0

ne vous inquiétez pas, la seule raison pour laquelle je sais est parce que je suis tombé pour exactement la même chose avant: P –

0

Votre code fonctionne pour moi.

J'utilisé vos gestionnaires d'événements avec le XAML suivant:

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

L'erreur renvoyée sur la ligne RememberMe_Checked? ou sur quelque chose d'autre qui est défini comme une conséquence de la modification de l'état activé de AutoSignIn?
Avez-vous, par exemple, des liens de données qui pourraient affecter cela?

+0

Merci pour votre réponse. Mon XAML ressemble à la vôtre sauf que les deux cases à cocher ont la propriété IsChecked définie sur "true" car je veux les définir par défaut. Si elles sont définies sur false lors de l'exécution, elles fonctionnent. L'erreur semble être déclenchée par AutoSignIn.IsEnabled = true lorsque l'application démarre. – DeVilFisCh