WPF Barre d'outils Séparateur réduit à rien quand à l'intérieur d'un StackPanel
Compte tenu de la très simple d'application wpf,
<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>
Le Séparateur d'élément réduit à rien. Si j'ai mis le Séparateur juste avant le StackPanel commence, elle va s'afficher. Pourquoi est-ce arrivé? Est-il un paramètre de style qui peut être appliquée quelque part pour éviter cela?
OriginalL'auteur kenwarner | 2009-08-13
Vous devez vous connecter pour publier un commentaire.
La
StackPanel
est en train de changer l'orientation de laSeparator
en quelque sorte. Notez que si vous indiquez explicitement auSeparator
à 20 unités de large, leSeparator
sera une ligne horizontale au lieu de verticale de la ligne. C'est en partie ce qui se passe.Si vous appliquez un
LayoutTransform
à laSeparator
, elle annule quel que soit leStackPanel
est en train de faire.Je ne comprends pas la nécessité d'une
StackPanel
.Merci...a fait le tour pour moi.
En fait le StackPanel n'est PAS de changer l'orientation du séparateur; le séparateur par défaut à l'horizontale. C'est la Barre d'outils qui modifie l'orientation à la verticale pour vous; mais vous n'obtenez pas cette prestation si le séparateur n'est pas un enfant direct de la Barre d'outils. Voir ma réponse ci-dessous.
OriginalL'auteur Joel B Fant
Séparateurs par défaut à l'Horizontale.
Séparateurs placé directement à l'intérieur d'une Barre d'outils ont leurs styles changé, parce que la Barre d'outils remplace les styles par défaut de ses éléments. Séparateurs d'ailleurs obtenir le style par défaut d'un séparateur. De sorte que vous aurez besoin pour le style, le séparateur de vous-même si vous vwant garder à l'intérieur de la StackPanel.
Cette CodeProject discussion inclut un exemple de code pour faire cela.
Référence: WPF Unleashed par Adam Nathan, page 117.
OriginalL'auteur stone
Barres d'outils sont drôles au sujet de ce que vous mettez à l'intérieur. Ils obtiennent drôle quand tous les éléments ne sont pas des enfants directs de la Barre d'outils. Le regroupement des éléments sont ToolBarTray (groupe de barres d'outils, Barre d'outils, et ToolBarPanel (logique, pour s'effondrer de débordement). C'est ce que WPF veut voir:
OriginalL'auteur AndyM