2010-07-27 46 views
2

我有一個很簡單的問題:中的數據綁定代碼背後的C#

我有一個人民財產,其類型爲列表<人>和人都有一個名字和姓氏。 我想告訴我的listBoxPerson的名字,我想在代碼綁定操作的背後 - 不想使用的ItemsSource屬性 - 這裏是我的代碼片段:

Binding userBinding = new Binding(); 
     userBinding.Source =People; 
     userBinding.Path = new PropertyPath("Person.Name"); 
     listBoxPerson.SetBinding(ContentProperty, userBinding); 

,這裏是我的XAML代碼:

< ListBox Height="303" HorizontalAlignment="Left" Margin="12,108,0,0" Name="listBoxPerson" VerticalAlignment="Top" Width="234" > 

     <ListBox.Resources> 
      < ObjectDataProvider x:Key="UserData" ObjectType="local:Person"/ > 
     </ListBox.Resources> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       < Label Content="{Binding Path=Name}" ></Label > 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

這作品時,我寫

listboxPerson.ItemsSource= People; 

但與第一給定的代碼上市沒人管。我很困惑如何解決這個綁定問題,並會很高興與任何幫助=)

+0

我以爲有一個答案,但我有點失望,當我看到它是一個編輯... =) – cemregoksu 2010-07-27 09:06:03

回答

0

你試過ItemsSourceProperty而不是ContentProperty你可以使用它嗎?

2

這個問題沒有任何意義。

是否應該在代碼中填充ListBox.Items而不是將ItemsSource綁定到集合?如果是這樣,則根本不需要創建綁定;您的代碼隱藏應該是這個樣子:

MyListBox.Items.AddRange(myCollection); 

那是你應該在代碼中創建,而不是在XAML綁定到Name財產的想法?在這種情況下,您需要找到DataTemplate中的Label對象並在其上創建綁定。很難想象在哪種情況下這將是一個好主意。

如果你被問到「爲什麼這麼做?」,他說:「因爲我被告知」真的不是答案。你需要找出你被要求這樣做的原因。除其他事項外,瞭解原因將有助於你理解你試圖提出的問題。