2013-11-28 50 views
0

我有一個DataTemplate,它包含一個TextEdit(DevExpress組件)。我將三種類型加載到TextEdit中:字符串,整數和DateTime。 當TextEdit顯示日期時間時,我想使用轉換器。否則,TextEdit將顯示原始值(不帶轉換器)。也許我可以使用DataTrigger,當我的數據類型是DateTime時,使用Setter來設置DatetimeConverter。但是我怎麼能達到這個目標呢?我認爲,這很容易,但我不知道如何設置轉換器只適用於DateTimes。WPF Datatrigger設置StaticResource轉換器

UPDATE

<DataTemplate x:Key="DefaultTemplate"> 
     <dxe:TextEdit Name="TxtNewValue" Grid.Column="0" Margin="0" 
         HorizontalAlignment="Stretch" 
         Text="{Binding TargetValue, UpdateSourceTrigger=PropertyChanged}" 
         Mask="{Binding TargetFieldDescription.fdValidateExp}" 
         Loaded="FocusTextEditOnLoad"/> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Date}"> 
       <Setter TargetName="TxtNewValue" Property="MaskType" Value="DateTime" /> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.DatTime}"> 
       <Setter TargetName="TxtNewValue" Property="MaskType" Value="DateTime" /> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Time}"> 
       <Setter TargetName="TxtNewValue" Property="MaskType" Value="RegEx" /> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Num}"> 
       <Setter TargetName="TxtNewValue" Property="MaskType" Value="RegEx" /> 
      </DataTrigger>     
     </DataTemplate.Triggers> 

    </DataTemplate> 

回答

1

我不知道如果我正確地理解你的問題,但這個converter應該工作:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     DateTime dt = new DateTime(); 
     if (DateTime.TryParse(value.ToString(), out dt)) 
     { 
      return "it's a date"; 
     } 
     else 
     { 
      return "not a date"; 
     } 
    } 

我用這樣的:

<TextBox x:Name="txt1"/> 
<TextBox x:Name="txt2" Text="{Binding ElementName=txt1, Path=Text, Converter={StaticResource dateConverter}}"/> 

所以如果Text propertytxt1可以解析爲DateTimeTxt2將相應地表現。 希望你會發現它有用。

+0

謝謝Yoav,是的,它的工作原理。我的意思是,我有一個ContentControl,這取決於我想使用帶有Converter或沒有Converter的TextBox的類型。 – MrScf

+0

很高興我可以幫助:) – Yoav

+0

但我只有且只有一個DataTemplate ...定義兩個DataTemplate更好也更容易:一個用Converter,另一個不用Converter,不是嗎? – MrScf