<Window
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfApplication1="clr-namespace:WpfApplication1"
Title="WPF" Height="300" Width="300">
<Window.Resources>
<WpfApplication1:People x:Key="people"/>
<DataTemplate x:Key="personTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock
Style="{StaticResource lblStyle}"
Text="First Name" />
<TextBlock
Style="{StaticResource dataStyle}"
Text="{Binding Path=FirstName}"/>
<TextBlock
Style="{StaticResource lblStyle}"
Text="Age" />
<TextBlock
Style="{StaticResource dataStyle}"
Text="{Binding Path=Age}" />
</StackPanel>
<Image
Margin="4"
Grid.Column="1"
Width="96"
Height="140"
Source="{Binding Path=Photo}"/>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox
ItemsSource="{Binding Source={StaticResource people}}"
ItemTemplate="{StaticResource personTemplate}"/>
</Grid>
</Window>
//File:Window.xaml.cs
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public class Employee
{
public string FirstName
{
get;
set;
}
public int Age
{
get;
set;
}
public string Photo
{
get;
set;
}
public override string ToString()
{
return FirstName;
}
}
public class People : Collection<Employee>
{
public People()
{
this.Add(new Employee()
{
FirstName = "A",
Age = 26,
Photo = "a.png"
});
this.Add(new Employee()
{
FirstName = "C",
Age = 24,
Photo = "c.png"
});
}
}
}
Author: coder
Without specifying a DataTemplate, the ListBox displays a list of names.
<Window
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfApplication1="clr-namespace:WpfApplication1"
Title="WPF" Height="300" Width="300">
<Window.Resources>
<WpfApplication1:People x:Key="people"/>
<DataTemplate x:Key="personTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock
Style="{StaticResource lblStyle}"
Text="First Name" />
<TextBlock
Style="{StaticResource dataStyle}"
Text="{Binding Path=FirstName}"/>
<TextBlock
Style="{StaticResource lblStyle}"
Text="Age" />
<TextBlock
Style="{StaticResource dataStyle}"
Text="{Binding Path=Age}" />
</StackPanel>
<Image
Margin="4"
Grid.Column="1"
Width="96"
Height="140"
Source="{Binding Path=Photo}"/>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox
Margin="10"
ItemsSource="{Binding Source={StaticResource people}}"/>
</Grid>
</Window>
//File:Window.xaml.cs
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public class Employee
{
public string FirstName
{
get;
set;
}
public int Age
{
get;
set;
}
public string Photo
{
get;
set;
}
public override string ToString()
{
return FirstName;
}
}
public class People : Collection<Employee>
{
public People()
{
this.Add(new Employee()
{
FirstName = "A",
Age = 26,
Photo = "a.png"
});
this.Add(new Employee()
{
FirstName = "C",
Age = 24,
Photo = "c.png"
});
}
}
}
Different Font Family and Size for each ListBoxItem
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="300" Width="300">
<StackPanel>
<ListBox SelectionChanged="OuterListBox_SelectionChanged" Name="outerListBox">
<ListBoxItem Content="Item 1" FontFamily="Tahoma" HorizontalContentAlignment="Left" />
<ListBoxItem Content="Item 2" FontFamily="Algerian" FontSize="16" HorizontalContentAlignment="Center" />
<ListBoxItem Content="Item 3" FontSize="20" HorizontalContentAlignment="Right" />
<Button Content="Button directly in a list" Margin="5" />
<ListBoxItem HorizontalContentAlignment="Center" Margin="5">
<Button Content="Button wrapped in ListBoxItem" />
</ListBoxItem>
<ListBox Height="50" Margin="5">
<ListBoxItem Content="Inner List Item 1" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 2" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 3" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 4" Selected="InnerListBoxItem_Selected" />
</ListBox>
<StackPanel Margin="5" Orientation="Horizontal">
<Label Content="Enter some text:" />
<TextBox MinWidth="150" />
</StackPanel>
</ListBox>
<TextBlock Text="No item currently selected." Margin="10" HorizontalAlignment="Center" Name="txtSelectedItem" />
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void InnerListBoxItem_Selected(object sender, RoutedEventArgs e)
{
ListBoxItem item = e.OriginalSource as ListBoxItem;
if (item != null)
{
MessageBox.Show(item.Content + " was selected.", Title);
}
}
private void OuterListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
object item = outerListBox.SelectedItem;
if (item == null)
{
txtSelectedItem.Text = "No item currently selected.";
}
else
{
txtSelectedItem.Text = item.ToString();
}
}
}
}
Handles ListBoxItem Selected events for the ListBoxItems in the inner ListBox.
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="300" Width="300">
<StackPanel>
<ListBox SelectionChanged="OuterListBox_SelectionChanged" Name="outerListBox">
<ListBoxItem Content="Item 1" FontFamily="Tahoma" HorizontalContentAlignment="Left" />
<ListBoxItem Content="Item 2" FontFamily="Algerian" FontSize="16" HorizontalContentAlignment="Center" />
<ListBoxItem Content="Item 3" FontSize="20" HorizontalContentAlignment="Right" />
<Button Content="Button directly in a list" Margin="5" />
<ListBoxItem HorizontalContentAlignment="Center" Margin="5">
<Button Content="Button wrapped in ListBoxItem" />
</ListBoxItem>
<ListBox Height="50" Margin="5">
<ListBoxItem Content="Inner List Item 1" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 2" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 3" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 4" Selected="InnerListBoxItem_Selected" />
</ListBox>
<StackPanel Margin="5" Orientation="Horizontal">
<Label Content="Enter some text:" />
<TextBox MinWidth="150" />
</StackPanel>
</ListBox>
<TextBlock Text="No item currently selected." Margin="10" HorizontalAlignment="Center" Name="txtSelectedItem" />
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void InnerListBoxItem_Selected(object sender, RoutedEventArgs e)
{
ListBoxItem item = e.OriginalSource as ListBoxItem;
if (item != null)
{
MessageBox.Show(item.Content + " was selected.", Title);
}
}
private void OuterListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
object item = outerListBox.SelectedItem;
if (item == null)
{
txtSelectedItem.Text = "No item currently selected.";
}
else
{
txtSelectedItem.Text = item.ToString();
}
}
}
}
Use Panel as a ListBoxItem
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="300" Width="300">
<StackPanel>
<ListBox SelectionChanged="OuterListBox_SelectionChanged" Name="outerListBox">
<ListBoxItem Content="Item 1" FontFamily="Tahoma" HorizontalContentAlignment="Left" />
<ListBoxItem Content="Item 2" FontFamily="Algerian" FontSize="16" HorizontalContentAlignment="Center" />
<ListBoxItem Content="Item 3" FontSize="20" HorizontalContentAlignment="Right" />
<Button Content="Button directly in a list" Margin="5" />
<ListBoxItem HorizontalContentAlignment="Center" Margin="5">
<Button Content="Button wrapped in ListBoxItem" />
</ListBoxItem>
<ListBox Height="50" Margin="5">
<ListBoxItem Content="Inner List Item 1" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 2" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 3" Selected="InnerListBoxItem_Selected" />
<ListBoxItem Content="Inner List Item 4" Selected="InnerListBoxItem_Selected" />
</ListBox>
<StackPanel Margin="5" Orientation="Horizontal">
<Label Content="Enter some text:" />
<TextBox MinWidth="150" />
</StackPanel>
</ListBox>
<TextBlock Text="No item currently selected." Margin="10" HorizontalAlignment="Center" Name="txtSelectedItem" />
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void InnerListBoxItem_Selected(object sender, RoutedEventArgs e)
{
ListBoxItem item = e.OriginalSource as ListBoxItem;
if (item != null)
{
MessageBox.Show(item.Content + " was selected.", Title);
}
}
private void OuterListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
object item = outerListBox.SelectedItem;
if (item == null)
{
txtSelectedItem.Text = "No item currently selected.";
}
else
{
txtSelectedItem.Text = item.ToString();
}
}
}
}
Create a ListBoxItem, set font, content, add the ListBoxItem to the ListBox
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="300" Width="300">
<StackPanel>
<ListBox FontSize="16" Height="150" Margin="5" Name="listBox1" SelectionMode="Extended">
<ListBoxItem>List Item 1</ListBoxItem>
<ListBoxItem>List Item 2</ListBoxItem>
<ListBoxItem>List Item 3</ListBoxItem>
</ListBox>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<Label Content="_New item text:" VerticalAlignment="Center" Target="{Binding ElementName=textBox}" />
<TextBox Margin="5" Name="textBox" MinWidth="120" />
</StackPanel>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<Button Click="btnAddListItem_Click" Content="Add Item" IsDefault="True" Margin="5" Name="btnAddListItem" />
<Button Click="btnDeleteListItem_Click" Content="Delete Items" Margin="5" Name="btnDeleteListItem" />
<Button Click="btnSelectAll_Click" Content="Select All" Margin="5" Name="btnSelectAll" />
</StackPanel>
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void btnAddListItem_Click(object sender, RoutedEventArgs e)
{
if (textBox.Text.Length == 0)
{
MessageBox.Show("Enter text to add to the list.", Title);
}
else
{
ListBoxItem item = new ListBoxItem();
item.Content = textBox.Text;
item.IsSelected = true;
item.HorizontalAlignment = HorizontalAlignment.Center;
item.FontWeight = FontWeights.Bold;
item.FontFamily = new FontFamily("Tahoma");
listBox1.Items.Add(item);
textBox.Clear();
textBox.Focus();
}
}
private void btnDeleteListItem_Click(object sender, RoutedEventArgs e)
{
if (listBox1.SelectedItems.Count == 0)
{
MessageBox.Show("Select list items to delete.", Title);
}
else
{
while (listBox1.SelectedItems.Count > 0)
{
listBox1.Items.Remove(listBox1.SelectedItems[0]);
}
}
}
private void btnSelectAll_Click(object sender, RoutedEventArgs e)
{
listBox1.SelectAll();
}
}
}
Select All ListBox Items
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="300" Width="300">
<StackPanel>
<ListBox FontSize="16" Height="150" Margin="5" Name="listBox1" SelectionMode="Extended">
<ListBoxItem>List Item 1</ListBoxItem>
<ListBoxItem>List Item 2</ListBoxItem>
<ListBoxItem>List Item 3</ListBoxItem>
</ListBox>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<Label Content="_New item text:" VerticalAlignment="Center" Target="{Binding ElementName=textBox}" />
<TextBox Margin="5" Name="textBox" MinWidth="120" />
</StackPanel>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<Button Click="btnAddListItem_Click" Content="Add Item" IsDefault="True" Margin="5" Name="btnAddListItem" />
<Button Click="btnDeleteListItem_Click" Content="Delete Items" Margin="5" Name="btnDeleteListItem" />
<Button Click="btnSelectAll_Click" Content="Select All" Margin="5" Name="btnSelectAll" />
</StackPanel>
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void btnAddListItem_Click(object sender, RoutedEventArgs e)
{
if (textBox.Text.Length == 0)
{
MessageBox.Show("Enter text to add to the list.", Title);
}
else
{
ListBoxItem item = new ListBoxItem();
item.Content = textBox.Text;
item.IsSelected = true;
item.HorizontalAlignment = HorizontalAlignment.Center;
item.FontWeight = FontWeights.Bold;
item.FontFamily = new FontFamily("Tahoma");
listBox1.Items.Add(item);
textBox.Clear();
textBox.Focus();
}
}
private void btnDeleteListItem_Click(object sender, RoutedEventArgs e)
{
if (listBox1.SelectedItems.Count == 0)
{
MessageBox.Show("Select list items to delete.", Title);
}
else
{
while (listBox1.SelectedItems.Count > 0)
{
listBox1.Items.Remove(listBox1.SelectedItems[0]);
}
}
}
private void btnSelectAll_Click(object sender, RoutedEventArgs e)
{
listBox1.SelectAll();
}
}
}