2010-06-03 69 views
5

我遇到了使用模式匹配來確定列的可見性屬性的情況。 System.Windows.Visibility有兩個字段,Visibility.VisibleVisibility.Collapsed。可以enyone告訴我爲什麼下面的代碼:與DataGridColumn.Visibility匹配的F#模式

let colItem = myDataGrid.Columns.Item 1 
    chkBox.IsChecked <- 
      match colItem.Visibility with 
       | Visibility.Visible -> new Nullable<bool>(true) 
       | Visibility.Collapsed -> new Nullable<bool>(false) 

生成follwing警告:

不完整的圖案此 表達式匹配。例如,價值 '2uy'可能表明模式沒有涵蓋 的情況。

回答

7

在理論上類型能見度的值可以比其它可見或摺疊的,因爲達網絡枚舉允許下面的積分類型作爲枚舉類型的值的任何值(以允許之類的枚舉或運算)的東西。

+0

對,.NET枚舉是整數類型的薄外觀,並且可以具有任何基礎整數類型的值。 – Brian 2010-06-03 17:33:12

+0

這是正確的。例如,'(LanguagePrimitives.EnumOfValue 2uy:Visibility)'會給你一個'Visibility'類型的值,它既不是'Visible'也不''Collapsed',就像編譯器警告的那樣。 – kvb 2010-06-03 19:06:18