Question

Compte tenu de la très simple 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>

L'élément de séparation se réduit à rien. Si je mets le séparateur juste avant le StackPanel commence, il apparaîtra. Pourquoi cela arrive-t-il? Y at-il un cadre de style qui peut être quelque part appliqué pour éviter cela?

Était-ce utile?

La solution

Le StackPanel est en train de changer l'orientation de la Separator en quelque sorte. Notez que si vous dites explicitement le Separator être 20 unités de largeur, le Separator sera une ligne horizontale au lieu d'une ligne verticale. Cela fait partie de ce qui se passe.

Si vous appliquez un LayoutTransform au Separator, il quel que soit le StackPanel défait fait.

<Separator>
    <Separator.LayoutTransform>
        <RotateTransform
            Angle="90" />
    </Separator.LayoutTransform>
</Separator>

Je ne comprends pas la nécessité d'une StackPanel, cependant.

Autres conseils

Separators par défaut à l'orientation horizontale.

placés directement à l'intérieur Separators un ToolBar ont leurs styles ont changé, parce que la barre d'outils remplace les styles par défaut de ses éléments. Placés ailleurs obtenir des séparateurs le style par défaut d'un séparateur. Donc, vous devez vous-même le style de séparation si vous vwant de le garder à l'intérieur du StackPanel.

cette discussion CodeProject comprend des exemples de code pour y parvenir.

Référence:. WPF Unleashed par Adam Nathan, la page 117

Barres d'outils sont drôles à ce que vous mettez à l'intérieur. Ils obtiennent drôle quand tous les éléments ne sont pas les enfants directs du ToolBar. Les éléments de groupement sont ToolBarTray (groupe de barres d'outils), barre d'outils et ToolBarPanel (logique, en cas de débordement effondrement). 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top