F# / Silverlight绑定到代数数据类型
-
01-10-2019 - |
题
给定数据结构:
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"/>
我不认为,因为具有约束力的语法将能够解构类型 - 我认为这是不可能的。
谢谢
t
解决方案
我相信您不应该在访问 candidate
记录类型的字段(因为记录字段以标准.NET属性出现)。
关于歧视的联盟 - 我喜欢按照朱丽叶的建议使用自定义类型转换器的建议。另一个简单的选择是公开 fname
字段(两者共享 SalesRep
和 Analyst
如果我正确理解您的示例)是 Candidate
类型:
type Candidate =
| SalesRep of SalesRep
| Analyst of Analyst
member x.Name =
match x with
| SalesRep s -> s.fname
| Analyst a -> a.fname
然后,您应该能够使用标准的WPF绑定语法与属性结合。
不隶属于 StackOverflow