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"/>
أنا لا أفكر ، لأن بناء جملة الربط من شأنه أن يكون قادرًا على تفكيك النوع - وهو ما لا أعتقد أنه ممكن.
شكرًا
ر
المحلول
أعتقد أنه لا ينبغي أن تواجه أي مشكلة في الوصول إلى 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