Compte tenu de l'application WPF très simple
<Window x:Class="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="800"> <Grid> <ToolBar Height="50" > <MenuItem Header="Test1" /> <MenuItem Header="Test2" /> <StackPanel Orientation="Horizontal"> <Separator /> <MenuItem Header="Test3" /> <MenuItem Header="Test4" /> <MenuItem Header="Test5" /> </StackPanel> </ToolBar> </Grid> </Window>
3 Réponses :
Le Si vous appliquez un Je ne comprends pas le besoin d'un StackPanel code> modifie l'orientation du séparateur code> code> en quelque sorte. Notez que si vous indiquez explicitement le séparateur code> code> à 20 unités de large, le séparateur
code> sera une ligne horizontale au lieu d'une ligne verticale. Cela fait partie de ce qui se passe.
LayoutTransform code> au séparateur code>, il annule tout ce que le
stackpanel code> fait. p>
stackpanel code>, cependant. p> p>
Je lie la visibilité de la StackPanel pour désactiver les groupes de fonctionnalités
En fait, le StackPanel ne change pas l'orientation du séparateur; Le séparateur par défaut en orientation horizontale. C'est la barre d'outils qui change l'orientation vers la verticale pour vous; Mais vous n'obtenez pas cet avantage si le séparateur n'est pas un enfant direct de la barre d'outils. Voir ma réponse ci-dessous.
Les barres d'outils sont drôles de ce que vous mettez à l'intérieur. Ils sont drôles lorsque tous les éléments ne sont pas directs des enfants de la barre d'outils. Les éléments de regroupement sont la barre d'outils (groupe de barres d'outils), la barre d'outils et la barre d'outils (logique, pour effondrer le débordement). C'est ce que WPF veut voir:
<Grid> <ToolBarTray> <ToolBar Height="Auto"> <ToolBarPanel Orientation="Horizontal" ToolBar.OverflowMode="AsNeeded"/> <MenuItem Header="Test1" /> <Separator/> <MenuItem Header="Test2" /> </ToolBar> <ToolBar Height="Auto"> <ToolBarPanel ToolBar.OverflowMode="Never"/> <MenuItem Header="Test3" /> <MenuItem Header="Test4" /> <Separator/> <MenuItem Header="Test5" /> <ToolBarPanel ToolBar.OverflowMode="AsNeeded"/> <MenuItem Header="Test6" /> <MenuItem Header="Test7" /> </ToolBar> </ToolBarTray> </Grid>
Les panneaux d'outils ne sont-ils pas censés contenir les ménulseurs et le séparateur? Lorsque vous faites cela, le séparateur obtient toujours son orientation retournée. Si les panneaux d'outils ne sont pas censés contenir les ménulseurs, la liaison de la visibilité de la Toolbarpanel ne montrera pas / cacher les ménulseurs avec elle.
Séparateurs par défaut à l'orientation horizontale. P>
Les séparateurs placés directement à l'intérieur d'une barre d'outils ont modifié leurs styles, car la barre d'outils remplace les styles par défaut de ses éléments. Les séparateurs placés ailleurs obtiennent le style par défaut d'un séparateur. Donc, vous aurez besoin de styler le séparateur vous-même si vous vissez de le garder à l'intérieur de StackPanel. P>
Référence: WPF Unleashed em> par Adam Nathan, page 117. P>