نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
سلام
یه سئوالی که مطرح میشه اینه که در این حالت (در حالتی که ستونی بنام شماره ردیف داریم و از روش پست شماره 3 استفاده کردیم) ، آیا روشی هست که همزمان با ستون شماره ردیف ، بتونیم برای هر یه ردیف درمیون ، رنگ های متفاوتی به عنوان پشت زمینه ی ردیف ، تنظیم کنیم؟

چون پروپرتیِ AlternatingRowBackground ، وابسته به مقدار AlternationCount هست که در این حالت ، قبلا مجبوریم مقداری بهش بدیم .
بنبراین هر تغییری در مقدار AlternationCount ، یک طرف از این دو طرف را خراب میکنه و انگار به نظر میرسه که حداقل در کنترل DataGrid ، با استفاده از این روش ، نمیشه هر دوی این مورد را با هم تنظیم کرد.
میشه؟
نحوه ی همزمان تغییر رنگ یکی درمیان DataGridRow و شماره بندی ردیف سطرها :
نیاز به تغییر AlternationCount نیست . فقط کافی هست که برای Binding به AlternationIndex ، یک Converter برای تغییر رنگ پشت زمینه ی DataGridRow تعریف کنیم :


<DataGrid ItemsSource=“{Binding YourItemsSource}” AlternationCount=“{Binding RowCount}”>
<DataGrid.Resources>
<local:AlternationIndexToColorConverter x:Key=“AlternationIndexToColorConverter”/>
</DataGrid.Resources>

<DataGrid.Columns>
<DataGridTemplateColumn Header=“Row Number”>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text=“{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=AlternationIndex}”/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> <!-- Other columns -->
</DataGrid.Columns>

<DataGrid.RowStyle>
<Style TargetType=“DataGridRow”>
<Setter Property=“Background” Value=“{Binding RelativeSource={RelativeSource Self}, Path=AlternationIndex,
Converter={StaticResource AlternationIndexToColorConverter}}”/>
</Style>
</DataGrid.RowStyle>
</DataGrid>



و Converter :


public class AlternationIndexToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int index = (int)value;
if (index % 2 == 0)
return Brushes.White;
else
return Brushes.LightGray;
}


public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}