Presta atención ya que en este post vas a encontrar la respuesta que buscas.
Solución:
Como dijeron los demás bool?
no es igual a bool
. bool?
puede también ser null
ver Nullable
(msdn).
Si sabes lo que null
state quiere implicar, fácilmente puede usar el ?? – null-operador de fusión (msdn) para convertir su bool?
para bool
sin efectos secundarios (Exception
).
Ejemplo:
//Let´s say "chkDisplay.IsChecked = null" has the same meaning as "chkDisplay.IsChecked = false" for you
//Let "check" be the value of "chkDisplay.IsChecked", unless "chkDisplay.IsChecked" is null, in which case "check = false"
bool check = chkDisplay.IsChecked ?? false;
has declarado IsChecked
como un bool?
(Nullable
). Un booleano anulable puede ser true
, false
o null
. Ahora pregúntate: si IsChecked
era nullentonces, ¿qué valor se debe asignar a IsDisplay
(que sólo puede tomar un true
o false
)? La respuesta es que no hay una respuesta correcta. Una conversión implícita aquí solo podría producir problemas ocultos, razón por la cual los diseñadores decidieron permitir solo una conversión explícita y no implícita.
Me enfrento a tu pregunta cuando estoy usando el null comprobar operador ?.
:
if (!RolesList?.Any()) //Not accepted: cannot convert bool? to bool
Así que estoy usando esto en su lugar
if (RolesList?.Any() != true)
//value is null or false
En tu caso deberías configurarlo así:
obj.IsVisible = chkDisplayStuff.IsChecked ?? false;
Si posees alguna vacilación y capacidad de aumentar nuestro división puedes escribir un informe y con deseo lo interpretaremos.