מדריך WPF – פקדים בסיסיים: ListBox
הפקד ListBox מאפשר להציג למשתמש רשימה של ערכים שמתוכם המשתמש יכול לבחור אחד או יותר ערכים.
יצירת ListBox עם מספר ערכים
התכונה החשובה בפקד ListBox היא התכונה Items שאליה ניתן להכניס מספר אלמנטים מטיפוס ListBoxIItem, כאשר כל אלמנט כזה מייצג אלמנט אחד ברשימה.
יצירת רשימה עם מספר ערכים קבועים יכולה להתבצע באמצעות קוד הXAML הבא:
<Window x:Class="ControlsDemo.MainWindow"
>="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
>:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<WrapPanel>
<ListBox>
<ListBox.Items>
<ListBoxItem Content="Item 1" />
<ListBoxItem Content="Item 2" />
<ListBoxItem Content="Item 3" />
<ListBoxItem Content="Item 4" />
</ListBox.Items>
</ListBox>
</WrapPanel>
</Window>
והתוצאה:
הוספת אלמנטים ל ListBox באמצעות קוד #C
לרוב נרצה לטעון את הערכים בצורה דינמית באמצעות קוד #C, לדוגמא כאשר הרשימה מגיעה מקובץ או ממסד נתונים. כדי לגשת לרשימה מהקוד ראשית יש לתת לה שם באמצעות x:Name כפי שלמדנו בפרק בתחילת המדריך ואז ניתן להוסיף ישירות לתכונה Items אלמנטים מסוג ListBoxItem.
להלן קוד XAML וקוד #C לאפליקציה שמוסיפה לפקד ListBox מספר אלמנטים דרך קוד:
<Window x:Class="ControlsDemo.MainWindow"
>="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
>:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<WrapPanel>
<ListBox x:Name="listBox" />
</WrapPanel>
</Window>
והקוד בשפת #C:
using System.Windows;
using System.Windows.Controls;
namespace ControlsDemo
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; ++i)
{
ListBoxItem newItem = new ListBoxItem();
newItem.Content = "Item " + i;
listBox.Items.Add(newItem);
}
}
}
}
תוצאת הרצת הקוד הנ"ל
בחירה יחידה או בחירה מרובה
הפקד ListBox יודע לעבוד בשלוש צורות עבודה שונות שנשלטות ע"י התכונה SelectionMode. לתכונה זו הערכים האפשריים הבאים:
- Single – בצורת עבודה זו המשתמש יכול לבחור לכל היותר איבר אחד מתוך רשימת האיברים.
- Multiple – בצורת עבודה זו המשתמש יכול לבחור מספר איברים מתוך הרשימה.
- Extended – גם בצורת עבודה זו המשתמש יכול לבחור מספר איברים מהרשימה, השוני הוא באופן הבחירה. בשיטה זו הבחירה המרובה מתבצעת ע"י שימוש בכפתורים Ctrl ו Shift, באופן דומה לשיטת העבודה הסטנדרטית בWindows.
דוגמא לעבודה עם בחירה מרובה:
<Window x:Class="ControlsDemo.MainWindow"
>="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
>:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<WrapPanel>
<ListBox x:Name="listBox"
SelectionMode="Multiple" />
</WrapPanel>
</Window>
האירוע SelectionChanged
האירוע SelectionChanged מופעל כאשר ישנו שינוי באלמנט שנבחר ברשימה. ניתן להשיג את האלמנט הנבחר החדש, אם יש רק אחד, ע"י התכונה SelectedItem. במידה ויש מספר איברים שנבחרו ניתן להשתמש בתכונה SelectedItems.
הקוד הבא מופעל כאשר הבחירה משתנה ומבצע מעבר על האיברים שנבחרו:
קוד הXAML:
<Window x:Class="ControlsDemo.MainWindow"
>="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
>:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<WrapPanel>
<ListBox x:Name="listBox"
SelectionMode="Multiple"
SelectionChanged="listBox_SelectionChanged" />
</WrapPanel>
</Window>
קוד #C:
private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var selectedItem in listBox.SelectedItems)
{
//
}
}
תגובות בפייסבוק