F # / Silverlight Bindung an algebraische Datentypen
-
01-10-2019 - |
Frage
Bei einer Datenstruktur:
type Candidate = SalesRep of SalesRep | Analyst of Analyst
type ScorableCandidate = {
candidate: Candidate ;
mutable comments: string ;
mutable score: int ;
}
und ein Datengitter, das entweder des Kandidaten in der Lage sein will, anzuzeigen, ist es möglich, zu binden an der ScorableCandidate (die WPF-Bindung verwendet wird)?
<telerik:GridViewDataColumn Header="First Name" DataMemberBinding="{Binding candidate.fname}" IsFilterable="False" Width="100"/>
Ich denke nicht, da die Bindungssyntax würde bneed der Lage sein, die Art zu dekonstruieren -., Die ich glaube nicht möglich ist,
Thx
T
Lösung
Ich glaube, dass Sie keine Probleme beim Zugriff auf das candidate
Feld des Satzart haben sollten (weil Datensatzfelder erscheinen als Standard .NET Eigenschaften).
Im Hinblick auf die diskriminierte union - Ich mag die Anregung zu verwenden benutzerdefinierten Typ Konvertern als Juliet vermuten lässt. Eine weitere einfachere Möglichkeit wäre, das fname
Feld zu belichten als Eigenschaft des SalesRep
Typs (die sowohl von Analyst
und Candidate
geteilt wird, wenn ich Ihr Beispiel richtig verstehe):
type Candidate =
| SalesRep of SalesRep
| Analyst of Analyst
member x.Name =
match x with
| SalesRep s -> s.fname
| Analyst a -> a.fname
Dann sollten Sie in der Lage Standard WPF verwenden Bindungssyntax zu Eigenschaften für die Bindung.