2010-08-26 21 views
1

F#/ SILVERLIGHT綁定到給定的數據結構代數數據類型

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"/> 

我在想,不會,因爲綁定語法必須能夠解構類型 - 我認爲這是不可能的。

THX

牛逼

+1

我不用WPF來給出一個很好的答案,但是我工作過的小型項目使用了CustomerConvertors(http://msdn.microsoft.com/zh-cn/library/aa970913.aspx )來獲得你想要的功能。 – Juliet 2010-08-26 17:16:55

回答

1

我認爲你不應該訪問的記錄類型的candidate場(因爲記錄字段顯示爲標準.NET屬性)任何麻煩。

關於歧視的工會 - 我喜歡按照朱麗葉的建議使用定製型轉換器的建議。另一個簡單的辦法是,露出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用於綁定到屬性的綁定語法。

+0

這又出現了,我認爲這是我們要解決的問題。我沒有意識到受歧視的聯盟可以支持成員...... – akaphenom 2010-09-03 14:54:13