Silverlight: разделитель внутри списка? - PullRequest
0 голосов
/ 10 октября 2010

У меня есть список с несколькими элементами. Я хотел бы программно вставить разделитель в список. Возможно ли это?

MSDN говорит о Разделитель элемент управления, но Visual Studio не распознает его, когда я пытаюсь создать его экземпляр.

Я использую Silverlight 4.

Ответы [ 3 ]

2 голосов
/ 11 октября 2010

Элемент управления Separator, на который вы ссылаетесь, находится в WPF и не поддерживается в Silverlight из того, что я вижу в документации.

Я бы справился с этим с помощью шаблонов. Настройте свой шаблон с представлением элемента и вторым представлением разделителя, а затем свяжите видимость каждого с флагом IsSeparator на вашем объекте данных.

Тогда все, что вам нужно сделать, это установить фиктивный объект с флагом IsSeparator, установленным в true, чтобы получить новый элемент в вашем списке.

1 голос
/ 12 октября 2010

см: http://manfredlange.blogspot.com/2009/04/separator-for-menu-item-in-xaml-wpf.html

Я использую его в Silverlight 4, я просто перетаскиваю их с панели инструментов, и он добавляет мне ссылку на набор инструментов:

xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"

и я использую это так:

<toolkit:Separator Margin="15"/>
0 голосов
/ 26 мая 2012

Я сделал исправление, похожее на Джеймса.Добавление логического поля в TableModel, к которому привязывался список.

У меня было дополнительное требование к данным, сгруппированным по типам, которое я оставил в запросе LINQ ниже.Если вам это не нужно, вы можете использовать allData.Count вместо numDataTypes.Моя логическая переменная называлась IsLastItem и была заполнена:

int numDataTypes = allData.Select(o => o.Type).Distinct().Count();
IEnumerable<TableModel> ByTypes = allData
              .GroupBy(o => o.Type)
              .Select((g, index) => new TableModel()
              {
                ...
                IsLastItem = index == (numDataTypes - 1),
              });

Затем в ListBox (или ItemsControl) я использовала конвертер Boolean to Visibility (аналогичный тому, который был опубликован здесь Silverlight 4: как переключатьсяконтроль видимости ):

<ItemsControl ItemsSource="{Binding ByTypes}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                ...

                <!-- Seperator between list items -->
                <Rectangle Grid.Row="3" Height="20" Visibility="{Binding IsLastItem, Converter={StaticResource VisibileWhenFalseConverter}}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...