c# - 如果字符串包含特定字符则数据触发

标签 c# wpf xaml datatrigger

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

在我下面的示例中,我希望数据触发器在值中有颜色时关闭,之后的内容无关紧要。第一个触发器,如果​​值包含“RED”触发器应该关闭,无论它是否显示红色苹果、红色汽车、红色小球等。

<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>

我怎样才能做到这一点

最佳答案

创建转换器

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>

关于c# - 如果字符串包含特定字符则数据触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42841649/

相关文章:

具有相同方法名称的 C# 接口(interface)

c# - WPF如何绑定(bind)ComboBox

c# - 如何将 List<string> 转换为 List 中的逗号分隔引号字符串

c# - 如何通过对象的属性从自定义对象列表中删除重复项

c# - 释放 WPF 图像控件的缓存

wpf - WPF如何获取从其页面加载的窗口引用?

c# - Bing map 在使用自定义图钉时需要大量性能

c# - 在MVVM中处理MouseEnter over命令

c# - Dapper Contrib 插入 MatchNamesWithUnderscores 映射器无法正常工作

c# - 边框不会自动调整其内容