F # / Silverlight Привязка к алгебраическим данным типа

StackOverflow https://stackoverflow.com/questions/3577171

Вопрос

Учитывая структуру данных:

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 для привязки к свойствам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top