DataGrid - Zmiana tła tylko dla pierwszego elementu

0

Witam Serdecznie,

Opis Problemu :
Poniżej przedstawiam deklaracje w pliku XAML mojego grida. Chciałbym zmienić tło TYLKO dla pierwszego wiersza. Akcje chciałbym wykonać TYLKO za pomoćą XAML-a, bez code-behind. Jakieś pomysły ?

<DataGrid x:Name="Tabelka" ItemsSource="{Binding Persons}" AutoGenerateColumns="False">
  <DataGrid.Columns>
    <DataGridTextColumn Header="SurName" Binding="{Binding SurName}" />
    <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
  </DataGrid.Columns>           	        
</DataGrid>

Z Gór dziękuje za pomoc.

0

Witam,

Dzięki za odpowiedź. Niestety nie chcę wykorzystywać code-behind. Próbowałem to tego wykorzystać AutomationId, jednak próba się nie udała.

<DataGrid.ItemContainerStyle>
                <Style TargetType="{x:Type DataGridRow}">
                    <Setter Property="Background" Value="Red" />
                    <Style.Triggers>
                        <Trigger Property="AutomationProperties.AutomationId" Value=Row0">
                            <Setter Property="IsEnabled" Value="False" />
                            <Setter Property="Background" Value="Yellow" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.ItemContainerStyle>

Mimo tego, że każdy wiersz ma unikalne AutomationID, mój myk nie działa.

0

Można zrobić małe przekłamanie i zrobić coś takiego:

<Grid>
	<DataGrid x:Name="Tabelka" ItemsSource="{Binding Persons}" AutoGenerateColumns="False" AlternationCount="2147483647">
		<DataGrid.RowStyle>
			<Style TargetType="{x:Type DataGridRow}">
				<Style.Triggers>
					<Trigger Property="AlternationIndex" Value="0">
						<Setter Property="Background" Value="Red" />
					</Trigger>
				</Style.Triggers>
			</Style>
		</DataGrid.RowStyle>
		<DataGrid.Columns>
			<DataGridTextColumn Header="SurName" Binding="{Binding Surname}" />
			<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
		</DataGrid.Columns>
	</DataGrid>
</Grid>

Gdzie zostanie pokolorowany pierwszy element a następnie element "2147483648" który pewnie nigdy nie wystąpi. Może da się prościej i sensowniej po stronie xaml-a ale lepszego pomysłu nie mam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1