2012-05-24 91 views
0

我對DataBinding的理解仍處於「正在工作」的層面,所以這是我的問題。我有這樣的數據:列表框中的兩列數據綁定問題

private class User 
    { 
     public string username { get; set; } 
     public string real_name { get; set; } 
    } 

ObservableCollection<User> users = new ObservableCollection<User>(); 
...adds stuff... 
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(users); 

我希望這將顯示在一個兩列ListBox。我已經做得到在兩列組合框:

<ComboBox Height="23" HorizontalAlignment="Left" Margin="114,23,0,0" Name="comboBox_client" VerticalAlignment="Top" Width="113" IsEditable="True" ItemsSource="{Binding}" > 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding username}" Name="left" Width="50" /> 
        <TextBlock Text="{Binding real_name}" Name="right" Width="100" /> 
       </StackPanel> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
    </ComboBox> 

comboBox_client.ItemsSource = view; 

但我不知道如何讓一步到一個列表框,因爲我看不出有任何的ItemTemplate,而且我不明白上面Xaml實際做的背後的概念。如果我拿出ItemTemplate部分並嘗試ListBox上的其餘部分,我只是一個充滿System.Windows.DataTemplate的列表框。

指向正確的方向嗎?

回答

3

ListBox也有ItemTemplate屬性。我想你只是錯過了。

您可以使用您用於ComboBox的相同DataTemplate

+0

哈,謝謝!我真的不知道我是如何錯過的。其實,我確實知道如何,我沒有更多地介紹智能感知。這是我上午4:30編程得到的結果 – cost

+0

@cost完全沒問題,很高興我幫了忙。但我認爲你真正需要的是一些睡眠:) – Dummy01

1

列表框:

<ListBox ItemsSource="{Binding}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding username}" Width="50" /> 
        <TextBlock Text="{Binding real_name}" Width="100" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

但在我看來,ListView控件更適合完成這個任務:

<ListView ItemsSource="{Binding}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="User name" DisplayMemberBinding="{Binding username}" Width="50" /> 
       <GridViewColumn Header="Name" DisplayMemberBinding="{Binding RealName}" Width="100" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 
+0

是的,我有些錯過了ListBox有一個ItemTemplate。除了列出它們之外,我並沒有真正想要的東西,所以我沒有看到最初需要使用ListView。雖然也許我應該爲我的專欄添加一個不錯的標題。我只需要查看如何做到這一點,我從來沒有實際使用過一個列表視圖 – cost