Use DataTrigger and MultiDataTrigger.

image_pdfimage_print


   
  

<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"));
    }
  }
}