Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsControl + ItemsSource / 10 сообщений из 10, страница 1 из 1
08.02.2012, 13:15
    #37651593
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Здравствуйте! Возникла проблема. Имеется ItemsControl. На него кидается список. Шаблон списка элементов должен быть сеточкой.
Все бы нормально, но потребовалось ввести триггер и в зависимости от него не показывать некоторые элементы. Элемент становится Collapsed, но при этом ячейка в сетке, в которой стоит спрятанный элемент, не заполняется следующим элементом.
Это все логично, но как это исправить? Чтобы сетка заполнялась по типа StackPanel или WrapPanel (когда скрытый элемент реально не занимает место).

краткий код ниже
(соответсвенно класс Room имеет свойства Title и bool IsValid)

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
                    <ItemsControl ItemsSource="{Binding Path=RoomCollection}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <UniformGrid Columns="5" Rows="3"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.Style>
                                        <Style TargetType="{x:Type Grid}">
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding Path=IsValid}" Value="False">
                                                    <Setter Property="Visibility" Value="Collapsed"/>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </Grid.Style>
                                    <TextBlock Text="{Binding Path=Title}"/>
                                </Grid>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
...
Рейтинг: 0 / 0
08.02.2012, 13:35
    #37651639
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Sky Dragon,

Видимо у UniformGrid'а по умолчанию высота/длина строки/столбца стоит как "*". Нужно поставить "Auto".
...
Рейтинг: 0 / 0
08.02.2012, 14:09
    #37651711
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Руки-крюки, спасибо, но это не то)

нарисую ситуацию. 15 элементов. 4и 8 не должны показаываться. получится вот что (1 - элемент в ячейке сетки есть, 0 - ячейка пустая)

1 1 1 0 1
1 1 0 1 1
1 1 1 1 1

А хотелось бы, чтобы на экране было следующее:
1 1 1 1 1
1 1 1 1 1
1 1 1
...
Рейтинг: 0 / 0
08.02.2012, 14:42
    #37651778
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Видимо UniformGrid так не умеет.
...
Рейтинг: 0 / 0
08.02.2012, 15:11
    #37651848
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Алексей К, а кто умеет?)
...
Рейтинг: 0 / 0
08.02.2012, 16:31
    #37652082
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Sky DragonАлексей К, а кто умеет?)Grid умеет. Но изменение присоединяемых свойств Grid.Row и Grid.Column у элементов, отображённых в ИтемсКонтроле, мне видится весьма затруднительным. С другой стороны, это проще чем писать свою панель с нуля.
...
Рейтинг: 0 / 0
12.02.2012, 14:22
    #37657748
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
А почему бы не использовать вместе Collapsed - Hidden? Элемент не будет виден и в тоже время на его место не станет другой.
...
Рейтинг: 0 / 0
12.02.2012, 14:23
    #37657750
xpoft2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
(извиняюсь)
вместе* - вместо
...
Рейтинг: 0 / 0
13.02.2012, 13:20
    #37658873
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
Sky DragonРуки-крюки, спасибо, но это не то)

нарисую ситуацию. 15 элементов. 4и 8 не должны показаываться. получится вот что (1 - элемент в ячейке сетки есть, 0 - ячейка пустая)

1 1 1 0 1
1 1 0 1 1
1 1 1 1 1

А хотелось бы, чтобы на экране было следующее:
1 1 1 1 1
1 1 1 1 1
1 1 1

А мне данный подход больше напомнил wrap-panel.
...
Рейтинг: 0 / 0
17.02.2012, 11:09
    #37666713
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ItemsControl + ItemsSource
xpoft2010,
как раз таки и надо, что на его место встал другой, а он не становится )

eJack ,
Да, это и требуется. Просто Wrap пихает в себя все подряд. А хочется сделать упорядоченную сеточку.



На данный момент просто тупо создаем новую коллекцию, в которой нет не нужных элементов.

Всем спасибо за ответы )
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsControl + ItemsSource / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]