1

我一直在检查 Infragistics DataProvider 字段中的值,如果它是特定值,请更改它。

<igDP:Field Name="BeginDate" Label="Begin Date">
    <igDP:Field.Settings>
        <igDP:FieldSettings>
            <igDP:FieldSettings.EditorStyle>
                <Style TargetType="{x:Type igEditors:XamDateTimeEditor}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding BeginDate}" Value="01/01/0001">
                            <Setter Property="Text" Value=" "/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </igDP:FieldSettings.EditorStyle>
        </igDP:FieldSettings>
    </igDP:Field.Settings>
</igDP:Field>

BeginDate 值的类型为 DateTime。我正在尝试检查它是否是 DateTime 的最小值,如果是这样,我只是希望该字段显示为空白。

我试过 XamDateTimeEditor 和 XamTextEditor。使用 DateTimeEditor,什么都不会发生。使用 TextEditor,所有值都被清除。

希望能朝着正确的方向轻推!

4

1 回答 1

3

当值是 DateTime 的最小值时,您可以通过将编辑器的模板更改为空来执行此操作。完成此操作需要进行一些更改。

更改 #1,在样式中提供绑定到 BeginDate 并且此绑定无效,因为 DataContext 是 DataRecord 而不是您要绑定到的列表中的项目。如果您检查输出窗口,您将看到如下错误:

System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“DataRecord”(HashCode=13078478)上找不到“BeginDate”属性。绑定表达式:路径=开始日期;DataItem='DataRecord' (HashCode=13078478); 目标元素是'XamDateTimeEditor'(名称='');目标属性是“NoTarget”(类型“对象”)

要解决此问题,请将绑定更改为“DataItem.BeginDate”而不是“BeginDate”。

更改 #2,修改 Setter 以设置 Template 而不是 Text,并将其设置为空的 ConrolTemplate。

更新后的字段定义将是:

<igDP:Field Name="BeginDate">
    <igDP:Field.Settings>
        <igDP:FieldSettings>
            <igDP:FieldSettings.EditorStyle>
                <Style TargetType="{x:Type igEditors:XamDateTimeEditor}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding DataItem.DateOfHire}" Value="01/01/0001">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </igDP:FieldSettings.EditorStyle>
        </igDP:FieldSettings>
    </igDP:Field.Settings>
</igDP:Field>

如果为网格中的此字段启用编辑,此解决方案仍将允许您编辑值。

于 2012-08-04T23:26:12.250 回答