1. 程式人生 > >WPF中ListBox的綁定

WPF中ListBox的綁定

效果 ttr sent idt 獲取 我們 數組 inf word

WPF中列表式控件派生自ItemsControl類,繼承了ItemsSource屬性。ItemsSource屬性可以接收一個IEnumerable接口派生類的實例作為自己的值(所有可被叠代遍歷的集合都實現了這個接口,如數組、List<T>等)。每一個 ItemsControl的派生類都有自己的條目容器,如ListBox的條目容器ListBoxItem.當我們利用Binding為一個ItemsControl設置了ItemsSource屬性值,ItemsControl對象會自動叠代其中的數據元素,並為每個數據元素準備一個條目容器。
下面的例子,為ListBox綁定了一個List<T>類型的數據源,並在編寫框中顯示選中的Student對象的ID。

界面效果如下:

技術分享

XAML文件代碼:

[html] view plain copy print?
  1. <Window x:Class="_6_15.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="350" Width="525">
  5. <Grid>
  6. <ListBox Height="164" HorizontalAlignment="Left" Margin="12,0,0,12" Name="listBox1" VerticalAlignment="Bottom" Width="471"
  7. DisplayMemberPath="Name" SelectedValuePath="ID"/>
  8. <TextBox Height="23" HorizontalAlignment="Left" Margin="12,61,0,0" Name="textBox1" VerticalAlignment="Top" Width="120"
  9. Text="{Binding SelectedItem.ID,ElementName=listBox1}"/>
  10. <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,32,0,0" Name="textBlock1" Text="Student ID:" VerticalAlignment="Top" />
  11. <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,106,0,0" Name="textBlock2" Text="Student List:" VerticalAlignment="Top" />
  12. </Grid>
  13. </Window>

這裏需要說明一下的是ListBox的DisplayMemberPath屬性,顧名思義,其函數是ListBox中需要顯示的的綁定對象的Path,而SelectedValuePath,意思是在選中某個Item時我們可以通過ListBox的SelectedValue屬性獲取的值的類型,如選中了張三,則通過SelectedValue我們可以獲取張三的ID。
每一個派生自ItemsControl類的類都具有上述屬性,包括ListView、ListBox、ComBox、TreeView等等。

[csharp] view plain copy print?
    1. public partial class MainWindow : Window
    2. {
    3. public MainWindow()
    4. {
    5. InitializeComponent();
    6. List<Student> stuList = new List<Student>()
    7. {
    8. new Student(){ID=1,Name="張?三¨y"},
    9. new Student(){ID=2,Name="李¤?四?"},
    10. new Student(){ID=3,Name="王a?五?"}
    11. };
    12. this.listBox1.ItemsSource = stuList;
    13. }
    14. }
    15. public class Student
    16. {
    17. public int ID { get; set; }
    18. public string Name { get; set; }
    19. }

WPF中ListBox的綁定