Question

Etant donné une structure de données:

type Candidate =  SalesRep of SalesRep | Analyst of Analyst

type ScorableCandidate = {
    candidate: Candidate ;
    mutable comments: string ;
    mutable score: int ;
}

et une grille de données qui veut être en mesure d'afficher une ou l'autre des candidats, il est possible de lier (en utilisant la liaison WPF) à la ScorableCandidate?

<telerik:GridViewDataColumn Header="First Name" DataMemberBinding="{Binding candidate.fname}" IsFilterable="False" Width="100"/>

Je pense pas, comme la syntaxe de liaison serait bneed pour être en mesure de déconstruire le type -. Que je ne pense pas est possible

Thx

T

Était-ce utile?

La solution

Je crois que vous ne devriez pas avoir de difficultés à accéder au champ candidate du type d'enregistrement (parce que les champs enregistrement apparaissent comme propriétés standard .NET).

En ce qui concerne l'union discriminée - Je aime la suggestion d'utiliser de type convertisseurs personnalisés comme le suggère Juliette. Une autre option plus simple serait d'exposer le champ fname (qui est partagée par les deux SalesRep et Analyst si je comprends votre exemple à juste titre) comme une propriété du type Candidate:

type Candidate = 
  | SalesRep of SalesRep 
  | Analyst of Analyst 
  member x.Name = 
    match x with
    | SalesRep s -> s.fname
    | Analyst a -> a.fname

Ensuite, vous devriez être en mesure d'utiliser la syntaxe de liaison standard WPF pour la liaison aux propriétés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top