2012-05-22 56 views
1

我一直在檢查Infragistics DataProvider字段中的值,如果它是特定值,請對其進行更改。Infragistics/XAML - 檢查字段中的值

<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,所有的值都是空白的。

希望在正確的方向微調!

回答

3

當數值是DateTime的最小值時,可以通過將編輯器的模板更改爲空來完成此操作。需要做一些改變來完成這一點。

更改#1,風格提供了綁定到BeginDate,並且此綁定無效,因爲DataContext是DataRecord,而不是您綁定到的列表中的項目。如果您檢查輸出窗口,您將看到類似如下的錯誤:

System.Windows.Data錯誤:40:BindingExpression路徑錯誤:在'object'''DataRecord'(HashCode = 13078478)上找不到'BeginDate' 」。 BindingExpression:路徑= BEGINDATE; DataItem ='DataRecord'(HashCode = 13078478);目標元素是'XamDateTimeEditor'(Name ='');目標屬性是「NoTarget」(類型爲「Object」)

要解決此,更改綁定是「DataItem.BeginDate」而不是「BEGINDATE」。

更改#2,修改二傳手設置模板,而不是文本,並將其設置爲空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> 

該解決方案將仍然允許,如果編輯在網格這一領域的啓用,您可以編輯值。

+0

謝謝主席先生,它非常有幫助 – Rauld