WPF中ListBox的綁定
阿新 • • 發佈:2017-10-31
效果 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?
- <Window x:Class="_6_15.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="MainWindow" Height="350" Width="525">
- <Grid>
- <ListBox Height="164" HorizontalAlignment="Left" Margin="12,0,0,12" Name="listBox1" VerticalAlignment="Bottom" Width="471"
- DisplayMemberPath="Name" SelectedValuePath="ID"/>
- <TextBox Height="23" HorizontalAlignment="Left" Margin="12,61,0,0" Name="textBox1" VerticalAlignment="Top" Width="120"
- Text="{Binding SelectedItem.ID,ElementName=listBox1}"/>
- <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,32,0,0" Name="textBlock1" Text="Student ID:" VerticalAlignment="Top" />
- <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,106,0,0" Name="textBlock2" Text="Student List:" VerticalAlignment="Top" />
- </Grid>
- </Window>
這裏需要說明一下的是ListBox的DisplayMemberPath屬性,顧名思義,其函數是ListBox中需要顯示的的綁定對象的Path,而SelectedValuePath,意思是在選中某個Item時我們可以通過ListBox的SelectedValue屬性獲取的值的類型,如選中了張三,則通過SelectedValue我們可以獲取張三的ID。
每一個派生自ItemsControl類的類都具有上述屬性,包括ListView、ListBox、ComBox、TreeView等等。
[csharp] view plain copy print?
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- List<Student> stuList = new List<Student>()
- {
- new Student(){ID=1,Name="張?三¨y"},
- new Student(){ID=2,Name="李¤?四?"},
- new Student(){ID=3,Name="王a?五?"}
- };
- this.listBox1.ItemsSource = stuList;
- }
- }
- public class Student
- {
- public int ID { get; set; }
- public string Name { get; set; }
- }
WPF中ListBox的綁定