Bonjour,
Depuis quelques jours j'essaie de réaliser un binding entre une Checkbox à 3 états (ou plutot une DataGridCheckBoxColumn) et un type Enum que j'ai créé.
Voilà mon type Enum que j'ai nommé "Use" :
Voilà le code xaml de mon DataGrid :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Enum Use used notUsed hidden End Enum
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <DataGrid ItemsSource="{Binding Services, Mode=TwoWay}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridCheckBoxColumn Header="Use" IsThreeState="True" Binding="{Binding Use, Converter={StaticResource utbconverter}, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> <DataGridTextColumn Header="Mask" Binding="{Binding IPMask}"/> <DataGridTextColumn Header="Group" Binding="{Binding Group}"/> <DataGridTextColumn Header="VLAN" Binding="{Binding VLAN}"/> </DataGrid.Columns> </DataGrid>
Et enfin le code de mon convertisseur Use vers Boolean :
Code vb.net : 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 Class UseToBoolConverter Implements IValueConverter Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert Dim v As Use = CType(value, Use) Dim res As Nullable(Of Boolean) If v = Use.notUsed Then res = False ElseIf v = Use.used Then res = True Else res = Nothing End If Return res End Function Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack If value = False Then Return Use.notUsed ElseIf value = True Then Return Use.used Else Return Use.hidden End If End Function End Class
Et du coup, ce que je ne comprends pas c'est que ma CheckBox n'a que 2 états quand je clique dessus. J'ai essayé de remplacer mon type Use par un Nullable Boolean et ça fonctionne (sans convertisseur bien sûr). Mais l'idée c'était de gardé mon type Use qui est beaucoup plus clair à utiliser das le code.
Si quelqu'un a une idée...
Partager