Infragistics / XAML - 检查字段中的值

时间:2012-05-22 18:39:58

标签: xaml infragistics

我一直在检查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时,所有值都会被清空。

欣赏正确方向的推动!

1 个答案:

答案 0 :(得分:3)

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

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

System.Windows.Data错误:40:BindingExpression路径错误:'object'''DataRecord'(HashCode = 13078478)'上找不到'BeginDate'属性。 BindingExpression:路径= BEGINDATE; DataItem ='DataRecord'(HashCode = 13078478); target元素是'XamDateTimeEditor'(Name =''); target属性是'NoTarget'(类型'Object')

要解决此问题,请将绑定更改为“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>

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