2009-11-04 57 views
18

控制給定類的實例ThisClassShouldBeTheDataContext作爲在DataContext的觀點你怎麼能索引屬性綁定到WPF

class ThisClassShouldBeTheDataContext 
{ 
    public Contacts Contacts {get;set;} 
} 

class Contacts 
{ 
    public IEnumerable<Person> Persons {get;set;} 
    public Person this[string Name] 
    { 
    get 
    { 
     var p = from i in Persons where i.Name = Name select i; 
     return p.First(); 
    }  
    } 
} 

class Person 
{ 
    public string Name {get;set;} 
    public string PhoneNumber {get;set;} 
} 

我如何綁定Contact["John"].PhoneNumber到一個文本框?

<TextBox Text="{Binding ?????}" /> 

回答

27

的索引符號是基本相同的C#:

<TextBox Text="{Binding Contacts[John].PhoneNumber}" /> 

更多信息,請參見Binding Declarations Overview > Binding Path Syntax在MSDN。

這不會,當然,對於任意的數據類型的工作......

+19

如果我的指數是不是一個字符串,或者它從VM的其他財產的,說{結合聯繫人[ThisIsAnotherPropertyFromTheVm] .PhoneNumber }。我怎樣才能做到這一點? – Lance 2009-11-13 10:30:49

+2

在我開始使用WPF時,在評論中問了這個問題已經有好幾年了,現在我要回答它。我認爲最好的辦法是不綁定到索引屬性。只需公開另一個屬性,在該屬性中getter將返回索引屬性(例如Contacts [ThisIsAnotherPropertyFromTheVm] .PhoneNumber) – Lance 2015-10-02 12:58:54

+0

鏈接已中斷 – 2015-11-05 16:39:13