2011-09-07 106 views
5

也許這是一個簡單的問題,但我找不到答案。使用XAML我有這樣的代碼:如何將源類型'System.Nullable <bool>'轉換爲目標類型'bool'

<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')。

+2

這取決於你想要做什麼,如果複選框處於「不確定」狀態。 – Jon

回答

15
tblsInheriting.IsChecked.GetValueOrDefault(); 
3
if (tbIsInheriting.IsChecked.HasValue == true) 
    res.IsInheriting = tbIsInheriting.IsChecked.Value; 
9

CheckBox.IsChecked返回bool?,因爲它可以是一個三路複選框。如果您的複選框從未三路,我會親自使用:

res.IsInheriting = tblsInheriting.IsChecked.Value; 

這將拋出一個異常,如果莫名其妙的複選框已成爲沒有你期待它三路,而且是在不確定狀態。

否則,如果可能是三路,我會用:

res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue; 

其中defaultValue很可能會取決於你如何想的「不確定」狀態被翻譯truefalse

+0

'??'絕對是要走的路。另一個選擇是爲'Nullable '寫一個擴展方法。 –

相關問題