Изменить цвет фона строки в представлении списка, когда я изменяю содержимое элемента управления, привязанного к нему - PullRequest
1 голос
/ 04 ноября 2011

Хорошо, это мой сценарий.

У меня есть UserControl с ListView и, например, один 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 Ответ

2 голосов
/ 04 ноября 2011

Несколько решений, которые вы можете выбрать.

  1. Если вы хотите изменить небольшой набор цветов, используйте DataTrigger в XAML.(обратите внимание, что приведенный ниже код не проверен)

    <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.Это не рекомендуется, потому что вам нужно писать с выделенным кодом.

...