【发布时间】:2015-11-21 15:26:34
【问题描述】:
拜托,我在发疯之前很短,可能导致我的问题:
我正在尝试使用 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 中使用值不能。
【问题讨论】:
-
如果您不显式设置 Image 的 DataContext 会怎样?
-
那么绑定到 ErrorDescription.Severity 不起作用(DataContext 有问题)
-
但是
ValidationResults属性是什么?当前的Result对象? -
打错字了,对不起。
-
我刚刚测试了您的代码,它适用于我,无需在 DataTemplate 中设置 DataContext。