2015-08-27 3 views
0

Пожалуйста, я незадолго до сходит с ума, что могло привести мою проблему:Отображение изображения с помощью DataTrigger

Я пытаюсь отобразить изображение в соответствии со значением моей переменной ErrorDescription.Severity с использованием DataTriggers. Я успешно показываю переменную как текст рядом с изображением. Однако изображение не отображается.

Где моя ошибка?

<DataGrid ItemsSource ="{Binding Results}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 

      // works, displays "Error", "Warning" or "Info" 
      <DataGridTextColumn Binding="{Binding ErrorDescription.Severity}"></DataGridTextColumn> 

      // does not work, should display an image according to "Error", "Warning" or "Info" 
      <DataGridTemplateColumn > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Image DataContext="{Binding DataContext.Results, RelativeSource={RelativeSource AncestorType=DataGrid}}"> 
          <Image.Style> 
           <Style TargetType="{x:Type Image}"> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Warning"> 
              <Setter Property="Source" Value="/warning.png"/> 
             </DataTrigger > 
             <DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Notice"> 
              <Setter Property="Source" Value="/info.png"/> 
             </DataTrigger > 
             <DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Error"> 
              <Setter Property="Source" Value="/error.png"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Image.Style> 
         </Image> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

     </DataGrid.Columns> 
    </DataGrid> 

Подробнее: Results является ObservableCollection из Result, Result не реализует INotifyPropertyChange и имеет свойство ErrorDescription и ErrorDescription обладают свойством Severity которое является перечислением.

Благодарим вас за помощь, так как это действительно сводит меня с ума .. отображение значения в тексте работает, но использование значения в DataTrigger не делает.

+1

Что делать, если вы * не * явно установить DataContext на изображение в? – Clemens

+0

Тогда привязка к ErrorDescription.Severity не работает (проблема с DataContext) – peter

+1

Но что такое свойство 'ValidationResults'? Текущий объект «Результат»? – Clemens

ответ

1

Не устанавливайте явно DataContext изображения в DataTemplate. Кроме того, Results было бы неправильным свойством, так как это вся коллекция, а не отдельный элемент.

Заменить

<Image DataContext="{Binding DataContext.Results, RelativeSource={...}}"> 

по

<Image> 
Смежные вопросы