Bonjour,
je souhaiterais avoir un retour par rapport à mon utilisation du HierarchicalDataTemplate. Celui-ci s'applique à des Items qui peuvent eux-même contenir d'autres Items, tous les Items étant du même type.
Voici le code:
Je n'affiche donc que la partie du Grid qui correspond à ce que je veux mais est-ce la bonne solution, ou plutôt cette solution n'est-elle pas trop gourmande? En effet, ma façon de faire n'oblige-t-elle pas l'application à avoir les 4 WrapPanels en mémoire?
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
43
44
45
46
47
48
49
50
51
52
53
54 <HierarchicalDataTemplate DataType="{x:Type local1:NewMenuActionItem}" ItemsSource="{Binding}"> <Grid> <WrapPanel x:Name="ActionToolBarButton" HorizontalAlignment="Stretch" Visibility="Collapsed" Cursor="Hand"> <local2:ButtonToolBar Header="{Binding Path=Text}" Command="{Binding}" > </local2:ButtonToolBar> </WrapPanel> <WrapPanel x:Name="ActionToolBarMenu" VerticalAlignment="Center" Visibility="Collapsed"> <Menu Background="Transparent" VerticalAlignment="Center"> <MenuItem ToolTip="{Binding Path=Text}" ItemsSource="{Binding}" Cursor="Hand"> <MenuItem.Header> <Image Width="16" Height="16" Source="{Binding Path=ImageSource}"/> </MenuItem.Header> </MenuItem> </Menu> </WrapPanel> <WrapPanel x:Name="ActionCustomToolBar" Visibility="Collapsed"> <local2:CustomToolBar Header="{Binding Path=Text}" ItemsSource="{Binding}"/> </WrapPanel> <WrapPanel x:Name="ActionToolBarMenuItem" Visibility="Collapsed"> <MenuItem Header="{Binding Path=Text}" Command="{Binding}"/> </WrapPanel> </Grid> <HierarchicalDataTemplate.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasItems}" Value="false"/> <Condition Binding="{Binding HasImage}" Value="false"/> </MultiDataTrigger.Conditions> <Setter Property="Visibility" TargetName="ActionToolBarMenuItem" Value="Visible"/> </MultiDataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasItems}" Value="true"/> <Condition Binding="{Binding HasImage}" Value="false"/> </MultiDataTrigger.Conditions> <Setter Property="Visibility" TargetName="ActionCustomToolBar" Value="Visible"/> </MultiDataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasItems}" Value="false"/> <Condition Binding="{Binding HasImage}" Value="true"/> </MultiDataTrigger.Conditions> <Setter Property="Visibility" TargetName="ActionToolBarButton" Value="Visible"/> </MultiDataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasItems}" Value="true"/> <Condition Binding="{Binding HasImage}" Value="true"/> </MultiDataTrigger.Conditions> <Setter Property="Visibility" TargetName="ActionToolBarMenu" Value="Visible"/> </MultiDataTrigger> </HierarchicalDataTemplate.Triggers> </HierarchicalDataTemplate>
J'aimerais avoir votre avis la-dessus car je ne suis pas sûre de moi, même si je n'ai pas trouvé d'autre solution pour l'instant.
Merci d'avance.
Partager