Bonjour,
Après avoir pu expérimenter le fonctionnement des converters en utilisant le BooleanToVisibility, je souhaiterais maintenant implémenter mon propre converter qui, pour un RibbonGroup, renvoie la visibilité en fonction du fait qu'il contienne des boutons visibles ou non.
Voici le code de mon converter:
Et dans mon XAML:
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
30
31
32
33
34
35
36
37
38
39
40
41
42 [ValueConversion(typeof(Collection<IRibbonControl>), typeof(String))] class RibbonControlCollectionVisibilityConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Boolean bVisible = false; foreach (var item in (Collection<IRibbonControl>)value) { if (item.GetType().Name == "RibbonButton") { if (((RibbonButton)item).Visibility == Visibility.Visible) { bVisible = true; } } else if (item.GetType().Name == "RibbonSplitButton") { if (((RibbonSplitButton)item).Visibility == Visibility.Visible) { bVisible = true; } } } if (bVisible) { return Visibility.Visible; } else { return Visibility.Collapsed; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion }
Ici J'ai simplifié pour ne mettre qu'un bouton dans le Group mais le but serait de pouvoir ne rendre visible le Group que si l'un des boutons au moins est visible. Mais là ça ne fonctionne pas et je ne trouve pas pourquoi.
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 <ms:RibbonGroup x:Name="GroupTest" Visibility="{Binding Items, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource convItemsToVisibility}}"> <ms:RibbonGroup.Command> <ms:RibbonCommand LabelTitle="Command du Groupe"/> </ms:RibbonGroup.Command> <ms:RibbonGroup.GroupSizeDefinitions> <ms:RibbonGroupSizeDefinitionCollection> <ms:RibbonGroupSizeDefinition> <ms:RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True"/> </ms:RibbonGroupSizeDefinition> </ms:RibbonGroupSizeDefinitionCollection> </ms:RibbonGroup.GroupSizeDefinitions> <ms:RibbonButton Visibility="{Binding IsEnabled, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource convVisibility}}"> <ms:RibbonButton.Command> <ms:RibbonCommand LabelTitle="Test" LargeImageSource="Icone\I_DOCUMENT_MANQUANT.BMP" CanExecute="RibbonCommandEntreprise_CanExecute" /> </ms:RibbonButton.Command> </ms:RibbonButton> </ms:RibbonGroup>
Quelqu'un peut-il m'aider?
Partager