Строки, которые не видны на экране, не могут быть окрашены с помощью этого метода, поскольку они виртуализированы и фактически не существуют. В приведенном ниже стиле im привязка к свойству IsRed, чтобы превратить строки между красным и их цвет по умолчанию (поместите это в ресурсы from с сеткой данных на нем)
<Style
TargetType="{x:Type dg:DataGridRow}"
BasedOn="{StaticResource {x:Type dg:DataGridRow}}">
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=self, Path=IsRed}"
Value="True">
<Setter
Property="Background"
Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
У меня есть свойство зависимости в моей форме, называемое IsRed, это также может быть любое свойство, которое реализует INotifyPropertyChanged (свойства зависимости уведомляют об их изменениях)
public Boolean IsRed {
get { return (Boolean)GetValue(IsRedProperty); }
set { SetValue(IsRedProperty, value); }
}
// Using a DependencyProperty as the backing store for IsRed. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsRedProperty =
DependencyProperty.Register("IsRed", typeof(Boolean), typeof(Window1), new UIPropertyMetadata(false));
тогда в моем xaml у меня есть объявление вверху
<Window
x:Class="Grids.Window1"
x:Name="self">
, что означает, что я могу ссылаться на него с привязкой имени элемента (метод, который я считаю полезным)
С указанным выше кодом все, что вам нужно будет сделать при нажатии кнопки, будет
private void Button_Click(object sender, RoutedEventArgs e) {
IsRed = !IsRed;
}