Use DataTrigger and MultiDataTrigger.
<Window Background="Cornsilk" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-namespace:WpfApplication1" x:Class="WpfApplication1.Window1" Title="DataTrigger Sample" Width = "320" Height = "300"> <Window.Resources> <c:Employees x:Key="EmployeesData"/> <Style TargetType="ListBoxItem"> <Style.Triggers> <DataTrigger Binding="{Binding Path=State}" Value="WA"> <Setter Property="Foreground" Value="Red" /> </DataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Name}" Value="Portland" /> <Condition Binding="{Binding Path=State}" Value="OR" /> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="Cyan" /> </MultiDataTrigger> </Style.Triggers> </Style> <DataTemplate DataType="{x:Type c:Employee}"> <Canvas Width="160" Height="20"> <TextBlock Text="{Binding Path=Name}"/> <TextBlock Text="{Binding Path=State}"/> </Canvas> </DataTemplate> </Window.Resources> <StackPanel> <TextBlock FontSize="18" Margin="5" FontWeight="Bold" HorizontalAlignment="Center">Data Trigger Sample</TextBlock> <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew" ItemsSource="{Binding Source={StaticResource EmployeesData}}"/> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Data; using System.Collections.ObjectModel; namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); } } public class Employee { private string _name; private string _state; public string Name { get { return _name; } set { _name = value; } } public string State { get { return _state; } set { _state = value; } } public Employee(string name, string state) { this._name = name; this._state = state; } } public class Employees : ObservableCollection<Employee> { public Employees() { Add(new Employee("A", "WA")); Add(new Employee("B", "OR")); Add(new Employee("C", "WA")); Add(new Employee("D", "CA")); } } }
1. | Data Trigger Sample | ||
2. | Use Data Triggers to Change the Appearance of Bound Data |