DataGrid - Zmiana tła tylko dla pierwszego elementu

Odpowiedz Nowy wątek
2014-07-24 23:32
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.

Pozostało 580 znaków

2014-07-25 06:58
0

Hejka,
http://stackoverflow.com/ques[...]-a-color-to-a-row-in-datagrid
http://stackoverflow.com/ques[...]mn-of-wpf-datagrid-at-runtime
poczytaj;)
Pozdro


The only valid measurement of code quality: WTFs/min...

Pozostało 580 znaków

2014-07-25 07:34
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.

Pozostało 580 znaków

2014-07-25 09:57
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.


Yubby dibby dibby dibby dibby dibby dibby dum..
edytowany 1x, ostatnio: DibbyDum, 2014-07-25 09:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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