F # / Silverlight Привязка к алгебраическим данным типа
-
01-10-2019 - |
Вопрос
Учитывая структуру данных:
type Candidate = SalesRep of SalesRep | Analyst of Analyst
type ScorableCandidate = {
candidate: Candidate ;
mutable comments: string ;
mutable score: int ;
}
И сетка данных, которая хочет иметь возможность отображать любую из кандидатов, можно ли связать (с помощью привязки WPF) к ScorablackAndIdate?
<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 для привязки к свойствам.