Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 ItemsControl + ItemsSource  [new]
Sky Dragon
Member

Откуда:
Сообщений: 188
Здравствуйте! Возникла проблема. Имеется ItemsControl. На него кидается список. Шаблон списка элементов должен быть сеточкой.
Все бы нормально, но потребовалось ввести триггер и в зависимости от него не показывать некоторые элементы. Элемент становится Collapsed, но при этом ячейка в сетке, в которой стоит спрятанный элемент, не заполняется следующим элементом.
Это все логично, но как это исправить? Чтобы сетка заполнялась по типа StackPanel или WrapPanel (когда скрытый элемент реально не занимает место).

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

                    <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>
8 фев 12, 13:15    [12053342]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Руки-крюки
Member

Откуда:
Сообщений: 681
Sky Dragon,

Видимо у UniformGrid'а по умолчанию высота/длина строки/столбца стоит как "*". Нужно поставить "Auto".
8 фев 12, 13:35    [12053602]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Sky Dragon
Member

Откуда:
Сообщений: 188
Руки-крюки, спасибо, но это не то)

нарисую ситуацию. 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
8 фев 12, 14:09    [12054059]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13632
Видимо UniformGrid так не умеет.
8 фев 12, 14:42    [12054484]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Sky Dragon
Member

Откуда:
Сообщений: 188
Алексей К, а кто умеет?)
8 фев 12, 15:11    [12054874]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13632
Sky Dragon
Алексей К, а кто умеет?)
Grid умеет. Но изменение присоединяемых свойств Grid.Row и Grid.Column у элементов, отображённых в ИтемсКонтроле, мне видится весьма затруднительным. С другой стороны, это проще чем писать свою панель с нуля.
8 фев 12, 16:31    [12055929]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
xpoft2010
Member

Откуда: Оттуда
Сообщений: 184
А почему бы не использовать вместе Collapsed - Hidden? Элемент не будет виден и в тоже время на его место не станет другой.
12 фев 12, 14:22    [12076981]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
xpoft2010
Member

Откуда: Оттуда
Сообщений: 184
(извиняюсь)
вместе* - вместо
12 фев 12, 14:23    [12076986]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
eJack
Member

Откуда: Сибирь => Не резиновая
Сообщений: 826
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.
13 фев 12, 13:20    [12081109]     Ответить | Цитировать Сообщить модератору
 Re: ItemsControl + ItemsSource  [new]
Sky Dragon
Member

Откуда:
Сообщений: 188
xpoft2010,
как раз таки и надо, что на его место встал другой, а он не становится )

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



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

Всем спасибо за ответы )
17 фев 12, 11:09    [12107950]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить