与DataGridColumn.Visibility匹配的F#模式

问题描述:

我遇到了使用模式匹配来确定列的可见性属性的情况。 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'可能表明模式没有涵盖 的情况。

在理论上类型能见度的值可以比其它可见或折叠的,因为达网络枚举允许下面的积分类型作为枚举类型的值的任何值(以允许之类的枚举或运算)的东西。

+0

对,.NET枚举是整数类型的薄外观,并且可以具有任何基础整数类型的值。 – Brian 2010-06-03 17:33:12

+0

这是正确的。例如,'(LanguagePrimitives.EnumOfValue 2uy:Visibility)'会给你一个'Visibility'类型的值,它既不是'Visible'也不''Collapsed',就像编译器警告的那样。 – kvb 2010-06-03 19:06:18