拜托,我在发疯之前很短暂,可能会导致我的问题:
我正在尝试使用DataTriggers根据变量ErrorDescription.Severity
的值显示图像。我成功地将变量显示为图像旁边的文本。但是,没有显示图像。
我的错误在哪里?
<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
是Result
的ObservableCollection,Result
未实现INotifyPropertyChange并且具有属性ErrorDescription
,而ErrorDescription
具有属性Severity
,这是一个枚举。
感谢您的帮助,因为这真的让我很生气..显示文本的值,但使用DataTrigger中的值不会。
答案 0 :(得分:1)
不要在DataTemplate中显式设置Image的DataContext。除此之外,Results
无论如何都是错误的属性,因为它是整个集合,而不是单个元素。
替换
<Image DataContext="{Binding DataContext.Results, RelativeSource={...}}">
通过
<Image>