当我改变绑定到它的控件的内容时,在列表视图中更改行的背景颜色

时间:2011-11-04 10:34:00

标签: wpf listview background bind selecteditem

好的,这是我的情景。

我有一个带有ListView的UserControl,例如,一个TextBox绑定到ListView SelectedItem。

这很好用。

<ListView 
    x:Name="listviewUser"   
    IsSynchronizedWithCurrentItem="True">                             
    <ListView.View>
    <GridView>
      <GridViewColumn Header="User Name" 
                      DisplayMemberBinding="{Binding Path=UserName}" />                                
    </ListView.View>
</ListView>

<TextBox >
    <TextBox.Text>
      <Binding ElementName="listviewUser" 
               Path="SelectedItem.UserName" 
               ValidatesOnDataErrors="True" 
               Mode="TwoWay"
               UpdateSourceTrigger="PropertyChanged">                                   
      </Binding>
</TextBox.Text>

但我想更改文本框文本值更改时所选行的背景颜色。

如果这个问题已经解决了(我不是很擅长英语),我希望我能够简明扼要地赦免。

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以选择几种解决方案。

  1. 如果要更改一小组颜色,请在XAML上使用DataTrigger。 (请注意,以下代码未经过测试)

    <ListViewItem>
        <ListViewItem.Style>
            <Style TargetType="{x:Type ListViewItem}">
                <Setter Property="Background" Value="Black" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=textBox, Path=Text}" Value="passed">
                        <Setter Property="Background" Value="Yellow" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=textBox, Path=Text}" Value="wrong">
                        <Setter Property="Background" Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListViewItem.Style>
    </ListViewItem>
    
  2. 使用DataTemplateSelector进行更复杂的颜色选择。 一个很好的参考是:http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector

  3. 在ItemTemplate中使用事件处理程序。建议不要这样做,因为你需要在代码隐藏处写代码。