Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / свой WrapPanel / 3 сообщений из 3, страница 1 из 1
29.05.2012, 17:14
    #37816775
свой WrapPanel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свой WrapPanel
Делаю свой WrapPanel, хочу чтобы в строке было только максимум 4 элемента.
Делаю так (упрощенно):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
public class ProducerWrapPanel : Panel
{
    protected override Size MeasureOverride(Size constraint)
    {
        foreach (UIElement element in base.InternalChildren)
        {
            element.Measure(constraint);
        }

        return constraint;
    }

    protected override Size ArrangeOverride(Size arrangeBounds)
    {
        int count;
        double top;
        double left;

        count = 1;
        top = 0;
        left = 0;

        foreach (UIElement element in base.InternalChildren)
        {
            element.Arrange(new Rect(left, top, element.DesiredSize.Width, element.DesiredSize.Height));

            if ((float)count / 4.0 == count / 4)
            {
                left = 0;
                top = top + element.DesiredSize.Height;
            }
            else
            {
                left = left + element.DesiredSize.Width;
            }

            count++;
        }

        return arrangeBounds;
    }
}


Делает то, что нужно. Размещает по 4 элемента.
Теперь хочу, чтобы эти 4 элемента были во всю ширину панели.
Т.е. надо, как я понимаю, найти размеры панели и зная ее, растянуть/сжать элементы.

Вопрос - как определить площадь и как растянуть элементы?
Тут, похоже, есть нюансы - через входной параметр MeasureOverride найти размер не получилось.
Сжать элементы получилось, но растянуть - нет.
Нужна наводка :)
...
Рейтинг: 0 / 0
29.05.2012, 17:30
    #37816804
свой WrapPanel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свой WrapPanel
хотя, вру - параметр функции MeasureOverride и есть размер панели.
вот как растянуть элементы - вопрос.
...
Рейтинг: 0 / 0
06.06.2012, 20:59
    #37828423
Eugene22
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свой WrapPanel
Смотри тут пример с созданием своей панели компоновки. Правда там Silverlight, но принцип с WPF будет один и тот же
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / свой WrapPanel / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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