как преобразовать исходный тип 'System.Nullable <bool>' в целевой тип 'bool' - PullRequest
5 голосов
/ 07 сентября 2011

Может быть, это простой вопрос, но я не могу найти ответ. Используя XAML у меня есть этот код:

<CheckBox Grid.Column="2"  Grid.Row="3" Height="23" HorizontalAlignment="Left" Name="tbIsInheriting"  VerticalAlignment="Top" Width="191" Margin="0,4,0,0" />

, поэтому в .cs файле мне нужно получить значение этого флажка: итак, у меня есть:

res.IsInheriting = tbIsInheriting.IsChecked;

но это ошибка (невозможно преобразовать исходный тип 'System.Nullable' в целевой тип 'bool').

Ответы [ 3 ]

15 голосов
/ 07 сентября 2011
tblsInheriting.IsChecked.GetValueOrDefault();
9 голосов
/ 07 сентября 2011

CheckBox.IsChecked возвращает bool?, поскольку это может быть трехсторонний флажок. Если ваш флажок никогда трехсторонний, я бы лично использовал:

res.IsInheriting = tblsInheriting.IsChecked.Value;

Это вызовет исключение, если ваш флажок каким-то образом стал трехсторонним, а вы его не ожидали и находится в неопределенном состоянии.

В противном случае, если может быть трехсторонним, я бы использовал:

res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue;

где defaultValue, вероятно, будет true или false в зависимости от того, как вы хотите, чтобы "неопределенное" состояние было переведено.

3 голосов
/ 07 сентября 2011
if (tbIsInheriting.IsChecked.HasValue == true)
     res.IsInheriting = tbIsInheriting.IsChecked.Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...