Bonjour à tous,

J'ai un souci avec la mise à jour d'une ObervableCollection vers la Vue.

Lors du remplissage de la vue j'ai pas de souci, la listview se met bien a jour.

Dans ma vue j'ai une Listview que j'ai Implémente ainsi:

Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
                        <ListView Margin="10" 
                              Name="GRD_Datas" 
                              Height="340"
                              ItemsSource="{Binding GRD_DatasAll_Collection }"
                              SelectedItem="{Binding GRD_DatasAll_Selected}">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="ListViewItem">
                                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                            </Style>
                        </ListView.ItemContainerStyle>
                        <ListView.View>
                            <GridView>
                                <GridViewColumn Header="{Binding GRD_Header_Idx_Text, FallbackValue='idx'}"
                                                Width="30">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Grid Background="{Binding Path=mColor}">
                                                <TextBlock HorizontalAlignment="Center"
                                                           Height="13"
                                                           VerticalAlignment="Top"
                                                           TextWrapping="Wrap"
                                                           Text="{Binding Path=mIdx}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
 
                                <GridViewColumn Header="{Binding GRD_Header_Name_Text, FallbackValue= 'Alarm name'}" 
                                                    Width="230" >
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate >
                                            <Grid Background="{Binding Path=mColor}">
                                                <TextBlock  HorizontalAlignment="Right" 
                                                            Height="13"  
                                                            VerticalAlignment="Top" 
                                                            TextWrapping="Wrap"
                                                            Text="{Binding Path=mName}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
 
                                <GridViewColumn Header="{Binding GRD_Header_Severity_Text, FallbackValue='Severity'}" 
                                                    Width="100">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate >
                                            <Grid Background="{Binding Path=mColor}">
                                                <TextBlock  HorizontalAlignment="Right" 
                                                            Height="13"  
                                                            VerticalAlignment="Top" 
                                                            TextWrapping="Wrap"
                                                            Text="{Binding Path=mSeverity}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="{Binding GRD_Header_Date_Text, FallbackValue='Date'}" 
                                                    Width="120">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate >
                                            <Grid Background="{Binding Path=mColor}">
                                                <TextBlock  HorizontalAlignment="Right" 
                                                            Height="13"  
                                                            VerticalAlignment="Top" 
                                                            TextWrapping="Wrap"
                                                            Text="{Binding Path=mDate}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="{Binding GRD_Header_Type_Text, FallbackValue='Type'}" 
                                                    Width="100">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate >
                                            <Grid Background="{Binding Path=mColor}">
                                                <TextBlock  HorizontalAlignment="Right" 
                                                            Height="13"  
                                                            VerticalAlignment="Top" 
                                                            TextWrapping="Wrap"
                                                            Text="{Binding Path=mType}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>

GRD_DatasAll_Collection est déclaré ainsi dans ma VueModele:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 Public Property GRD_DatasAll_Collection As ObservableCollection(Of MyHistory)
        Get
            Return Modele.GRD_DatasAll_Collection
        End Get
        Set(value As ObservableCollection(Of MyHistory))
            Modele.GRD_DatasAll_Collection = value
            OnPropertyChanged("GRD_DatasAll_Collection")
        End Set
    End Property
Dans Modele j'ai bien sur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Property GRD_DatasAll_Collection As ObservableCollection(Of MyHistory)
MyHistory est une classe de ce type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Public Class MyHistory
    Public Property mIdx As Integer
    Public Property mSeverity As String
    Public Property mSeverityLevel As ALARM_LEVEL
    Public Property mName As String
    Public Property mType As String
    Public Property mDate As String
    Public Property mColor As SolidColorBrush = Brushes.White
End Class

Donc lorsque je rempli la collection, pas de souci.

Mais j'ai besoin de modifier par exemple la couleur de background des Cellules.

Je parcours la collection afin de changer mColor.

Ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    Public Sub HistoRef()
 
        Dim Color As SolidColorBrush
        Dim i As Integer
            For i = 0 To GRD_DatasAll_Collection.Count - 1
 
                If CHK_Colorref_Checked Then
                    Select Case GRD_DatasAll_Collection(i).mSeverityLevel
                        Case ALARM_LEVEL.vbUrgent
                            Color = AppOptions.UrgColor
                        Case ALARM_LEVEL.vbNonUrgent
                            Color = AppOptions.NUrgColor
                        Case ALARM_LEVEL.vbInfo
                            Color = AppOptions.InfoColor
                        Case ALARM_LEVEL.vbEvent
                            Color = AppOptions.EventColor
                        Case Else
                            Color = Brushes.White
                    End Select
                Else
                    Color = Brushes.White
                End If
                GRD_DatasAll_Collection(i).mColor = Color
 
            Next
           'J'ai tenté de rajouter cela, mais cela ne change rien.
            OnPropertyChanged("GRD_DatasAll_Collection")
 
    End Sub
CHK_Colorref_Checked est le retour d'une checkbox.checked.
Soir je met le background blanc ou de la couleur suivant ce que j'ai dans mon ".ini" --> AppOptions

Pourquoi cela ne se met pas à jour.

J'ai remarqué que si je bouge un paramètre dans le XAML à la volé, là il y a bien un rafraîchissement et donc une prise en compte de la nouvelle couleur qu'il y a dans la collection.

Merci de votre aide.