Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单个文本框样式以红色显示所有负数_C#_Wpf_Xaml_Binding_Datatrigger - Fatal编程技术网

C# 单个文本框样式以红色显示所有负数

C# 单个文本框样式以红色显示所有负数,c#,wpf,xaml,binding,datatrigger,C#,Wpf,Xaml,Binding,Datatrigger,乍一看,该任务类似于 在我的例子中,我必须在ItemsControl中显示点的集合。每个点都有几个NumericValue类型的属性,这些属性最终是围绕Nullable的包装器 我将点的所有这些属性显示为文本框。NumericValue类的属性为负,如果IsNegative=True,我希望相应文本框的前景为红色 但是,我不希望在每个文本框的样式中定义此规则,而是使用绑定到IsNegative的DataTrigger创建一个样式 简化的XAML如下所示 <ItemsControl Ite

乍一看,该任务类似于

在我的例子中,我必须在ItemsControl中显示点的集合。每个点都有几个NumericValue类型的属性,这些属性最终是围绕Nullable的包装器

我将点的所有这些属性显示为文本框。NumericValue类的属性为负,如果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>

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

使用此处给出的转换器

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

你可以跟着。我想这会对你有帮助。

谢谢你的建议。我更愿意将所有着色内容保存在XAML中,因此我将使用此方法作为最后手段。>请帮助我为该单一样式的DataTrigger定义绑定。Binding={Binding IsNegative}似乎不起作用。我用原始的文本框绑定尝试了这一点,然后还尝试了在{binding IsNegative}方面对我来说更符合逻辑的方法。在任何情况下,甚至都没有调用IsNegative属性。样式的无条件设置器工作正常。如果DataContext不是点本身(您在这里似乎指出了这一点),则需要修改绑定,如果该数据属性是点,则绑定将是{binding Data.IsNegative},这在这里是等效的{Binding Path=Data.IsNegative}。如果绑定不起任何作用,您应该尝试。
 <ItemsControl ItemsSource="{Binding Path=Points}">
        ...
        <TextBox Text="{Binding Path=Data.Proposal.Value}" Foreground="{Binding Data.Proposal.IsNegative, Converter={StaticResource valueToBackground}}" />
        ...
    </ItemsControl>