web-dev-qa-db-fra.com

Cochez la case WPF IsChecked

Je ne parle pas d'un gestionnaire d'événements pour cela, mais plutôt d'un simple If Statement vérifier si le CheckBox a été vérifié. Jusqu'à présent, j'ai:

if (chkRevLoop.IsChecked == true){}

Mais cela soulève l'erreur:

Impossible de convertir implicitement le type 'bool?' à "bool". Il existe une conversion explicite (il vous manque une distribution?)

Existe-t-il un moyen de faire cela qui me manque?

24
hereiam

Vous pouvez utiliser opérateur de coalescence nul . Cet opérateur renvoie l'opérande de droite si l'opérande de gauche est nul. Vous pouvez donc retourner false lorsque le CheckBox est indéterminé état (lorsque le La valeur de la propriété IsChecked est définie sur null):

if (chkRevLoop.IsChecked ?? false)
{

}
30
Salah Akbari

Vous devez effectuer cette conversion à partir de bool? à bool, pour le faire fonctionner:

if((bool)(chkRevLoop.IsChecked)){}

Puisqu'il s'agit déjà d'une condition bool, vous n'avez pas besoin de mettre true false car si elle est vraie, seule cette condition entrera dans cette condition if sinon. donc pas besoin de mettre chkRevLoop.IsChecked == true ici, vous demandez par défaut ==true par puttin IsChecked

6
DeshDeep Singh

Déjà plusieurs réponses mais voici une autre alternative

if (chkRevLoop.IsChecked.GetValueOrDefault()) {}

De MSDN

4
tier1

Pensez à vérifier si la propriété a une valeur:

var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false;

if (isChecked == true){}
4
Hughnited

UNE bool? peut être vrai, faux ou nul, tandis que bool ne peut être vrai ou faux. ? rend le type "nullable" et ajoute null comme possibilité alors qu'il ne l'est normalement pas, vous pouvez donc probablement simplement utiliser

if ((bool)chkRevLoop.IsChecked == true){}

ou

if (chkRevLoop.IsChecked == (bool?)true){}

pour le faire correspondre et travailler. La seconde est probablement meilleure, car je ne sais pas ce qui se passerait dans le casting si IsChecked est nul

3
MichaelN

IsChecked la propriété de CheckBox est booléenne Nullable.

public bool? IsChecked { get; set; }

Créez un booléen Nullable et égalisez cela fonctionnera pour vous.

Code

bool? NullableBool = chkRevLoop.IsChecked;
if(NullableBool == true)
{
}
2
Abin Mathew

Une ligne suffit pour vérifier si le bouton radio est coché ou non:

string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";
2
H Aßdøµ

Vous devez utiliser un objet Nullable. Parce que la propriété IsChecked peut être affectée à trois valeurs différentes: Null, true et false

Nullable<bool> isChecked  = new Nullable<bool>(); 
isChecked = chkRevLoop.IsChecked; 

if (isChecked.HasValue && isChecked.Value)
{


}
1
Ugur