1

给定一个数据结构:

type Candidate =  SalesRep of SalesRep | Analyst of Analyst

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

以及希望能够显示任一候选人的数据网格,是否可以绑定(使用 WPF 绑定)到 ScorableCandidate?

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

我不这么认为,因为绑定语法需要能够解构类型——我认为这是不可能的。

谢谢

4

1 回答 1

1

我相信访问candidate记录类型的字段应该不会有任何问题(因为记录字段显示为标准的 .NET 属性)。

关于有区别的联合 - 我喜欢 Juliet 建议的使用自定义类型转换器的建议。另一个更简单的选择是将fname字段(由两者共享SalesRepAnalyst如果我正确理解您的示例)作为Candidate类型的属性:

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

然后您应该能够使用标准的 WPF 绑定语法来绑定到属性。

于 2010-08-26T21:01:18.017 回答