Как создать элементы управления производными с такими разделителями? - PullRequest
1 голос
/ 04 января 2012

Это дизайн, который мне нужно реализовать

enter image description here

По сути, это пункты меню, разделенные вертикальной чертой.Я использую PRISM, и вся строка в основном ItemsControl, где я вставляю пункты меню

Интересно, можно ли стилизовать (без написания кода) ItemsControl таким образом, что он автоматически вставит панель после всех элементовкроме последнего?

Ничего страшного, если бы я не хотел пропускать последний вертикальный бар.

Важно!Я не могу просто вставить разделитель вручную, потому что пункты меню вставлены из разных модулей (PRISM), и я никогда не знаю, какой из них является последним, поэтому мне нужно решить эту проблему на уровне контейнера.

Ответы [ 2 ]

2 голосов
/ 05 января 2012

Это можно сделать с помощью Clip и RectangleGeometry. Вставив канал слева от шаблона данных, установите Прямоугольный клип, чтобы обрезать первый канал. Немного хакерский, и вам, возможно, придется придумать начало клипа, чтобы заставить его выглядеть правильно, но вот рабочий пример:

<ItemsControl xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String>No</sys:String>
    <sys:String>Pipe</sys:String>
    <sys:String>On</sys:String>
    <sys:String>First</sys:String>
    <sys:String>Item</sys:String>
    <ItemsControl.Clip>
        <RectangleGeometry Rect="5,0,1000,10000" />
    </ItemsControl.Clip>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="|" />
                <TextBlock Text="{Binding}" />
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
0 голосов
/ 04 января 2012

Вы можете указать вертикальную черту в шаблоне Items в вашем ItemsControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...