【问题标题】:Display image using DataTrigger使用 DataTrigger 显示图像
【发布时间】: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>

更多信息: ResultsResult 的 ObservableCollection,Result 没有实现 INotifyPropertyChange 并具有属性 ErrorDescriptionErrorDescription 具有属性 Severity,它是一个枚举。

感谢您的帮助,因为这真的让我发疯了.. 将值显示为文本有效,但在 DataTrigger 中使用值不能。

【问题讨论】:

  • 如果您显式设置 Image 的 DataContext 会怎样?
  • 那么绑定到 ErrorDescription.Severity 不起作用(DataContext 有问题)
  • 但是ValidationResults 属性是什么?当前的Result 对象?
  • 打错字了,对不起。
  • 我刚刚测试了您的代码,它适用于我,无需在 DataTemplate 中设置 DataContext。

标签: c# wpf


【解决方案1】:

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

替换

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

通过

<Image>

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2013-02-25
    • 2011-05-16
    • 2013-02-07
    • 2017-07-22
    • 2012-04-29
    相关资源
    最近更新 更多