【问题标题】:Datatrigger if string contains certain characters如果字符串包含某些字符,则数据触发
【发布时间】:2017-08-08 01:46:58
【问题描述】:

我正在努力弄清楚如何检查一个字符串是否包含某些字符/单词,并使数据触发器在此基础上触发。

在下面的示例中,我希望数据触发器在值中有颜色时关闭,之后发生的事情无关紧要。第一个触发器,如果​​值包含“RED”,无论是 RED Apple 、RED car、RED little ball 等,都应该触发。

<DataTrigger Binding="{Binding Name}" Value="RED Apple" >
<Setter Property="Foreground" Value="Red" />
</DataTrigger>

<DataTrigger Binding="{Binding Name}" Value="YELLOW Lemon" >
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>

<DataTrigger Binding="{Binding Name}" Value="GREEN Pear" >
<Setter Property="Foreground" Value="Green" />
</DataTrigger>

我怎样才能做到这一点

【问题讨论】:

标签: c# wpf xaml datatrigger


【解决方案1】:

创建转换器

public class ColorConverter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        return ((string)value.Contains("Color");
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        throw new NotImplementedException();
    }
}

然后使用以下 XAML。

<Window.Resources>
    <myNamespace:ColorConverter x:Key="ColorConverter" Color="red" />
</Window.Resources>

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=Color,
                                   Converter={StaticResource ColorConverter}}">
        <DataTrigger.Value>true</DataTrigger.Value>
        <Setter TargetName="Color" Property="Foreground" Value="Red"/> 
    </DataTrigger>
</DataTemplate.Triggers>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 2021-10-31
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2011-01-22
    相关资源
    最近更新 更多