单个文本框样式,用于以红色显示所有负数

本文关键字:显示 红色 文本 样式 用于 单个 | 更新日期: 2023-09-27 18:34:16

乍一看,任务看起来类似于WPF 文本块负数为红色

就我而言,我必须在ItemsControl中显示积分集合。每个点都有几个类型为 NumericValue 的属性,这些属性最终是 Nullable<double> 的包装器。

public class Point
{
    NumericValue Proposal { get; set; }
    NumericValue Accepted { get; set; }
    NumericValue Approved { get; set; }
    ... etc.
}

我将点的所有这些属性显示为文本框。类 NumericValue 具有属性 IsNegative,如果 IsNegative=True,我希望相应文本框的前景为红色。

但是,我不想在每个单独的文本框的样式中定义此规则,而是创建具有绑定到 IsNegative 的 DataTrigger 的单个样式。

简化的 XAML 如下所示。

<ItemsControl ItemsSource="{Binding Path=Points}">
...
    <TextBox Text="{Binding Path=Data.Proposal.Value}" ... />
    <TextBox Text="{Binding Path=Data.Accepted.Value}" ... />
...
</ItemsControl>

请帮助我为该单一样式的数据触发器定义绑定定义。

单个文本框样式,用于以红色显示所有负数

使用 WPF TextBlock 中给出的转换器 负数以红色显示

如下
 <ItemsControl ItemsSource="{Binding Path=Points}">
        ...
        <TextBox Text="{Binding Path=Data.Proposal.Value}" Foreground="{Binding Data.Proposal.IsNegative, Converter={StaticResource valueToBackground}}" />
        ...
    </ItemsControl>

您可以按照如何:在 WPF 中使用 XAML 的条件格式设置进行操作。我认为这对你有帮助。