![](/img/trans.png)
[英]Page shared DataTrigger style converter cannot be found with StaticResource
[英]WPF Datatrigger to set a StaticResource converter
我有一個DataTemplate,它包含一個TextEdit(DevExpress組件)。 我將三種類型的類型加載到TextEdit中:字符串,整數和DateTimes。 當TextEdit顯示日期時間時,我想使用轉換器。 否則,TextEdit將顯示原始值(不帶轉換器)。 也許我可以使用DataTrigger,並且當我的數據類型為DateTime時,請使用Setter來設置DatetimeConverter。 但是我該如何實現呢?我認為這很容易,但是我不知道如何只為DateTimes設置Converter。
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>
我不確定我是否正確理解了您的問題,但是此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}}"/>
因此,如果txt1
的Text property
可以解析為DateTime
Txt2
會相應地運行。 希望您會發現它有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.