Devexpress(WPF GridControl)使用DataTrigger修改GridColumn中的图像

时间:2013-08-21 08:36:26

标签: wpf binding devexpress datatrigger gridcontrol

我正在使用WPF Devexpress GridControl,我有一个包含图像的列。我想使用DataTrigger修改图像。这是XAML:

      <dxg:GridColumn Header="{Binding Source={StaticResource MainWindowResources}, Path=Resource.Status}"
                                FieldName="SaveStatus"
                                MinWidth="60"
                                Width="60"
                                ReadOnly="True" 
                                >
                    <dxg:GridColumn.CellTemplate>
                        <DataTemplate>
                            <Image HorizontalAlignment="Center"
                                   VerticalAlignment="Center"
                                   Style="{StaticResource ImageStatusStyle}">
                            </Image>
                        </DataTemplate>
                    </dxg:GridColumn.CellTemplate>

                </dxg:GridColumn>

和风格:

<Style TargetType="{x:Type Image}" x:Key="ImageStatusStyle">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Data.SaveStatus, UpdateSourceTrigger=
PropertyChanged}" Value="{x:Static enums:SaveState.DoneSuccesfuly}">
            <Setter Property="Source" Value="..\Icons\StatusOk.png" />
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Data.SaveStatus, UpdateSourceTrigger=
PropertyChanged}" Value="{x:Static enums:SaveState.DoneUnsuccesfuly}">
            <Setter Property="Source" Value="..\Icons\StatusError.png" />
        </DataTrigger>
    </Style.Triggers>
</Style>

这不起作用。我究竟做错了什么?这个问题有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

我设法找到了解决方案。问题是datatrigger绑定而不是Data.SaveStatus应该是RowData.Row.SaveStatus:

 <Style.Triggers>
                <DataTrigger Binding="{Binding Path=RowData.Row.SaveStatus, UpdateSourceTrigger=PropertyChanged}" Value="{x:Static enums:SaveState.DoneSuccesfuly}">
                    <Setter Property="Source" Value="..\Icons\StatusOk.png"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=RowData.Row.SaveStatus, UpdateSourceTrigger=PropertyChanged}"  Value="{x:Static enums:SaveState.DoneUnsuccesfuly}">
                    <Setter Property="Source" Value="..\Icons\StatusError.png"></Setter>
                </DataTrigger>
            </Style.Triggers>

答案 1 :(得分:0)

尝试访问这样的图片:

<Style TargetType="{x:Type Image}" x:Key="ImageStatusStyle">
    <Style.Triggers>
        <Setter Property="Source" Value="/ApplicationName;component/Icons/StatusOk.png" />
        <DataTrigger Binding="{Binding Path=Data.SaveStatus, UpdateSourceTrigger=
PropertyChanged}" Value="{x:Static enums:SaveState.DoneUnsuccesfuly}">
            <Setter Property="Source" Value="/ApplicationName;component/Icons/StatusError.png" />
        </DataTrigger>
    </Style.Triggers>
</Style>