dxg:GridColumn DevExpress 中的数据触发器

Posted

技术标签:

【中文标题】dxg:GridColumn DevExpress 中的数据触发器【英文标题】:data Triggers in dxg:GridColumn DevExpress 【发布时间】:2022-01-12 08:13:45 【问题描述】:

大家好,希望你们一切顺利。 我正在将 devExpress 与 wpf 一起使用,但我陷入了困境: 我有 dxg:GridColumn 接收一个布尔值,我想改变这个单元格的内容取决于这个布尔值,如下所示 如果真显示=>“锁定” if False show => "解锁"

<dxg:GridColumn IsSmart="True" FieldName="IsLocked" Header="x:Static localization:Resources.Property_IsLocked">
                        <dxg:GridColumn.EditSettings>
                            <dxe:TextEditSettings HorizontalContentAlignment="Center" Style="DynamicResource trythisone">
                            </dxe:TextEditSettings>
                        </dxg:GridColumn.EditSettings>
</dxg:GridColumn>

我将样式设置为这样

<Style x:Key="trythisone" TargetType="x:Type dxe:TextEditSettings">
                <Style.Triggers>
                    <DataTrigger Binding="Binding Path=Text" Value="True">
                        <Setter Property="TextBlock.Text" Value="okokok"/>
                    </DataTrigger>
                    <DataTrigger Binding="Binding Path=Content" Value="False">
                        <Setter Property="TextBlock.Text" Value="ssssssssssssss"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>

【问题讨论】:

【参考方案1】:

我认为你可以使用DisplayTextConverter:

xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
...
<dxg:GridColumn IsSmart="True" FieldName="IsLocked" Header="x:Static localization:Resources.Property_IsLocked">
    <dxg:GridColumn.EditSettings>
        <dxe:TextEditSettings DisplayTextConverter="dxmvvm:BooleanToObjectConverter TrueValue=Locked, FalseValue=UnLocked" />
    </dxg:GridColumn.EditSettings>
</dxg:GridColumn>

【讨论】:

【参考方案2】:

我在没有 DevExpress 的情况下解决了这个问题

                        <dxg:GridColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock  TextAlignment="Center">
                                    <TextBlock.Style>
                                        <Style TargetType="x:Type TextBlock">
                                            <Style.Triggers>
                                                <DataTrigger Binding="Binding Path=Data.IsLocked" Value="True">
                                                    <Setter Property="Text" Value="x:Static localization:Resources.Locked"/>
                                                </DataTrigger>
                                                <DataTrigger Binding="Binding Path=Data.IsLocked" Value="False">
                                                    <Setter Property="Text" Value="x:Static localization:Resources.UnLocked"/>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>
                            </DataTemplate>
                        </dxg:GridColumn.CellTemplate>
                    </dxg:GridColumn>

【讨论】:

以上是关于dxg:GridColumn DevExpress 中的数据触发器的主要内容,如果未能解决你的问题,请参考以下文章

: DevExpress 学习:DevExpress 汉化(简单实用快速)

devexpress demo 的源码 在哪儿

devexpress vcl 哪个版本支持d7

转DevExpress控件安装

devexpress 15.2怎么破解

[DevExpress]DevExpress的安装与使用