2010-06-03 14 views
5

Sto riscontrando una situazione in cui sto utilizzando la corrispondenza dei modelli per determinare la proprietà di visibilità di una colonna. System.Windows.Visibility ha due campi, Visibility.Visible e Visibility.Collapsed. Può enyone dimmi perché il seguente codice:F # pattern matching with DataGridColumn.Visibility

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

genera l'avviso follwing:

modello incompleto partite su questo espressione. Ad esempio, il valore "2uy" potrebbe indicare un caso non coperto dal/i modello/i.

risposta

7

In teoria un valore di tipo visibilità può essere diverso da Visibile o Compresso perché enums .net consentono qualsiasi valore di tipo integrale sottostante come valore per il tipo enum (per consentire cose come come OR enumerazioni).

+0

Giusto, le enumerazioni .NET sono sottili facciate su tipi interi e possono assumere qualsiasi valore del tipo intero sottostante. – Brian

+0

Questo è corretto. Ad esempio, '(LanguagePrimitives.EnumOfValue 2uy: Visibility)' ti darà un valore di tipo 'Visibility' che non è né 'Visible' né' Collapsed', proprio come avverte il compilatore. – kvb