using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Media.Imaging; namespace DataGridArrowSlectionChanged { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext=new ViewModel(); } } public class Item { public int Id { get;set;} public string Name { get;set;} } public class ViewModel : INotifyPropertyChanged { public ViewModel() { items.Add(new Item() { Id= 1, Name = "images.jpg" }); items.Add(new Item() { Id = 2, Name = "spring1.jpg" }); items.Add(new Item() { Id = 3, Name = "delete.jpg" }); } private ObservableCollection items = new ObservableCollection(); public ObservableCollection Items { get { return items; } set { items = value; } } private Item selectedItem; public Item SelectedItem { get { return selectedItem; } set { if (value != selectedItem) { selectedItem = value; OnPropertyChanged("SelectedItem"); } } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string name) { var handler = System.Threading.Interlocked.CompareExchange(ref PropertyChanged, null, null); if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } } } public class StringToImageConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value.GetType() != typeof(string)) { throw new InvalidOperationException("The value must be a string"); } return new BitmapImage(new Uri((string)value)); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } } }