F # / Silverlight Binding a tipi di dati algebrici
-
01-10-2019 - |
Domanda
Data una struttura di dati di:
type Candidate = SalesRep of SalesRep | Analyst of Analyst
type ScorableCandidate = {
candidate: Candidate ;
mutable comments: string ;
mutable score: int ;
}
e una griglia di dati che vuole essere in grado di visualizzare uno dei due candidati, è possibile bind (utilizzando il WPF vincolante) alla ScorableCandidate?
<telerik:GridViewDataColumn Header="First Name" DataMemberBinding="{Binding candidate.fname}" IsFilterable="False" Width="100"/>
Io sono non pensare, come la sintassi di associazione sarebbe bneed essere in grado di destrutturare il tipo -., Che non credo sia possibile
Thx
T
Soluzione
Credo che non si dovrebbe avere alcuna difficoltà ad accedere al campo candidate
del tipo di record (perché i campi dei record appaiono come proprietà standard NET).
Per quanto riguarda l'Unione discriminata - mi piace il suggerimento di tipo convertitori utilizzo personalizzate come suggerisce Giulietta. Un'altra opzione più semplice sarebbe quella di esporre il campo fname
(che è condiviso da entrambi SalesRep
e Analyst
se ho capito bene il tuo esempio) come una proprietà del tipo Candidate
:
type Candidate =
| SalesRep of SalesRep
| Analyst of Analyst
member x.Name =
match x with
| SalesRep s -> s.fname
| Analyst a -> a.fname
Poi si dovrebbe essere in grado di utilizzare WPF standard di sintassi di associazione per il legame con le proprietà.