Как отобразить сепаратор под иконкой в ContextMenu?

147
03 октября 2019, 14:30

Есть два MenuItem'a между ними сепаратор, но как его отобразить под иконкой?

MenuItem xaml

<Button Content="Right-click me!" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Button.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Menu item 1" />
                <MenuItem Header="Menu item 2" />
                <Separator />
                <MenuItem Header="Menu item 3" />
            </ContextMenu>
        </Button.ContextMenu>
    </Button>
Answer 1

Стандартный шаблон сепаратора имеет вид:

<ControlTemplate TargetType="{x:Type Separator}">
    <Grid Margin="0,6,0,4" SnapsToDevicePixels="true" UseLayoutRounding="False">
        <Rectangle Fill="#E0E0E0" Height="1" Margin="30,0,1,1"/>
        <Rectangle Fill="White" Height="1" Margin="30,1,1,0"/>
    </Grid>
</ControlTemplate>

Как видно, в нем сделан отступ с помощью Margin, просто исправьте это:

<Window.Resources>
    <ControlTemplate x:Key="MySeparatorTemplate" TargetType="{x:Type Separator}">
        <Grid Margin="0,6,0,4" SnapsToDevicePixels="true" UseLayoutRounding="False">
            <Rectangle Fill="#E0E0E0" Height="1" Margin="1,0,1,1"/>
            <Rectangle Fill="White" Height="1" Margin="1,1,1,0"/>
        </Grid>
    </ControlTemplate>
</Window.Resources>
<Button Content="Right-click me!" VerticalAlignment="Center" HorizontalAlignment="Center">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Menu item 1" />
            <MenuItem Header="Menu item 2" />
            <Separator Template="{StaticResource MySeparatorTemplate}"/>
            <MenuItem Header="Menu item 3" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>

READ ALSO
Unity UI значение из GetComponent поместить в в Text

Unity UI значение из GetComponent поместить в в Text

Есть скрипт Movie который служит для управления player'ом и в нем же прописано кол-во здоровьяНужно вывести кол-во хп на Canvas в Text

125
Как создать видеоплеер на c#? [дубликат]

Как создать видеоплеер на c#? [дубликат]

На данный вопрос уже ответили:

133
C# windows service интерфейсы

C# windows service интерфейсы

Делаю службу для своих серверов с поднятой впн, нужно брать номер подсети и работать с ним

113