簡體   English   中英

WPF Datatrigger設置一個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}}"/>

因此,如果txt1Text property可以解析為DateTime Txt2會相應地運行。 希望您會發現它有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM