单个TextBox样式,为所有这些样式显示红色的负数

时间:2012-05-15 10:35:20

标签: c# wpf xaml binding datatrigger

乍一看,任务看起来很像 WPF TextBlock Negative Number In Red

在我的情况下,我必须在ItemsControl点集合中显示。每个Point都有几个NumericValue类型的属性,它们最终是Nullable<double>的包装。

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

我将Point的所有属性显示为TextBoxes。 NumericValue类具有IsNegative属性,如果IsNegative = True,我希望相应Textbox的Foreground为红色。

但是,我不希望在每个TextBox的样式中定义此规则,而是使用绑定到IsNegative的DataTrigger创建单个样式。

简化的XAML如下所示。

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

请帮我解决该单一样式的DataTrigger的绑定定义。

2 个答案:

答案 0 :(得分:0)

使用WPF TextBlock Negative number in red这样的转换器

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

答案 1 :(得分:0)

您可以关注How to: Conditional formatting using XAML in WPF。我认为这对你有所帮助。