【问题标题】:Change the text color of a listviewitem in WPF, based on the value of another ListviewItem in the same row根据同一行中另一个 ListviewItem 的值更改 WPF 中 listviewitem 的文本颜色
【发布时间】:2020-05-23 12:36:21
【问题描述】:

我想根据同一行中“MarID”列表视图项的第一个字符的值将“Bedrag”文本块项的文本颜色更改为绿色或红色。

marID的第一个字符为1时,文字颜色为绿色,为2时,文字颜色为红色。

我的 .xaml 文件中有以下代码:

<ListView x:Name="lstVerrichtingen" HorizontalAlignment="Left" Height="344" Margin="35,28,0,0" VerticalAlignment="Top" Width="934">
   <ListView.View>
      <GridView>
         <GridViewColumn x:Name="gridcolumnVerrichtingID" Header="VerrichtingID" Width="100" DisplayMemberBinding="{Binding VerrichtingID}"/>
         <GridViewColumn x:Name="gridcolumnDatum" Header="Datum" Width="100" DisplayMemberBinding="{Binding Datum, StringFormat={}\{0:dd/MM/yyyy\}}"/>
         <GridViewColumn x:Name="gridcolumnMarID" Header="MarID" Width="75" DisplayMemberBinding="{Binding MarId}"/>
         <GridViewColumn x:Name="gridcolumnBedrag" Header="Bedrag" Width="100" >
            <GridViewColumn.CellTemplate>
               <DataTemplate>
                  <TextBlock Text="{Binding Bedrag, StringFormat={}{0:0.00}}" TextAlignment="Right" Foreground=""/>
               </DataTemplate>
            </GridViewColumn.CellTemplate>
         </GridViewColumn>
         <GridViewColumn x:Name="gridcolumnVanAan" Header="VanAan" Width="100" DisplayMemberBinding="{Binding VanAan}"/>
         <GridViewColumn x:Name="gridcolumnRekeningNummer" Header="Rekeningnummer" Width="100" DisplayMemberBinding="{Binding RekeningNummer}"/>
      </GridView>
   </ListView.View>
</ListView>

我该如何解决这个问题?谢谢。

【问题讨论】:

  • 您可以为此使用 datatrigger

标签: c# wpf visual-studio xaml


【解决方案1】:

您可以使用 DataTrigger 检查 MarId 绑定值。

编辑:- 我现在注意到您要检查 MarId 的起始字符。这可以通过转换器完成。但是通过创建一个返回第一个字符的属性,你可以达到同样的效果。

    public char FirstIDChar
    {
        get
        {
            return MarID.ToString().First();
        }
    }

还有你的 xaml:

<TextBlock.Style>
    <Style TargetType="TextBlock">
        <Style.Triggers>
            <DataTrigger Binding="{Binding FirstIDChar}" Value="1">
                <Setter Property="Foreground" Value="Red"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding FirstIDChar}" Value="2">
                <Setter Property="Foreground" Value="Green"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

【讨论】:

  • 这会检查值是否等于 1 或 2,但它需要检查 marID 的第一个字符,因为它们在 100 或 1000 中。例如:marID = 232,marID = 1237。
  • @WhatTheCode,对不起。我没有注意到这一点。我已经用解决方法更新了答案。
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 2020-01-22
  • 1970-01-01
  • 2013-06-15
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多