使用DataTrigger显示图像

时间:2015-08-27 09:50:46

标签: c# wpf

拜托,我在发疯之前很短暂,可能会导致我的问题:

我正在尝试使用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>

更多信息: ResultsResult的ObservableCollection,Result未实现INotifyPropertyChange并且具有属性ErrorDescription,而ErrorDescription具有属性Severity,这是一个枚举。

感谢您的帮助,因为这真的让我很生气..显示文本的值,但使用DataTrigger中的值不会。

1 个答案:

答案 0 :(得分:1)

不要在DataTemplate中显式设置Image的DataContext。除此之外,Results无论如何都是错误的属性,因为它是整个集合,而不是单个元素。

替换

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

通过

<Image>