2010-06-03 6 views
5

Je rencontre une situation où j'utilise la correspondance de modèle pour déterminer la propriété de visibilité d'une colonne. System.Windows.Visibility a deux champs, Visibility.Visible et Visibility.Collapsed. Peut enyone me dire pourquoi le code suivant:Modèle F # correspondant à 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) 

génère l'avertissement follwing:

modèle incomplet correspond à cette expression . Par exemple, la valeur '2uy' peut indiquer un cas non couvert par le (s) motif (s).

Répondre

7

En théorie une valeur de type visibilité peut être autre chose que visible ou .net, car Collapsed énumérations permettent une valeur du type intégral sous-jacent comme une valeur pour le type de ENUM (pour permettre des choses comme ORing énumérations).

+0

À droite, les énumérations .NET sont des façades fines sur des types entiers et peuvent prendre n'importe quelle valeur du type entier sous-jacent. – Brian

+0

Ceci est correct. Par exemple, '(LanguagePrimitives.EnumOfValue 2uy: Visibility)' vous donnera une valeur de type 'Visibility' qui n'est ni' Visible' ni 'Collapsed', exactement comme le compilateur le signale. – kvb

Questions connexes