2010-06-03 5 views
5

Ich stoße auf eine Situation, in der ich den Musterabgleich zur Bestimmung der Sichtbarkeitseigenschaft einer Spalte verwende. System.Windows.Visibility hat zwei Felder, Visibility.Visible und Visibility.Collapsed. Kann enyone mir sagen, warum der folgende Code:F # -Muster, das mit DataGridColumn.Visibility übereinstimmt

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

die follwing Warnung erzeugt:

Spiele

unvollständige Muster auf diesem Ausdruck. Zum Beispiel kann der Wert '2uy' einen Fall angeben, der nicht durch die Muster abgedeckt ist.

Antwort

7

ein Wert vom Typ Sichtbarkeit Theoretisch kann etwas anderes als sichtbar oder ausgeblendet werden, da .net Aufzählungen jeder Wert des zugrunde liegenden integralen Typs als Wert für den Aufzählungstyp erlauben (die Dinge zu erlauben wie Aufzählungen ODER-Verknüpfung).

+0

Rechts, .NET-Enums sind dünne Fassaden über Integer-Typen und können jeden Wert des zugrunde liegenden Integer-Typs annehmen. – Brian

+0

Das ist richtig. Zum Beispiel wird '(LanguagePrimitives.EnumOfValue 2uy: Visibility)' Ihnen einen Wert vom Typ 'Visibility' geben, der weder' Visible' noch 'Collapsed' ist, genau wie der Compiler davor warnt. – kvb