WPF - свиващи клетки на мрежата

Имам някои проблеми с оформлението на бутоните на екрана. Има редица бутони с видимост, зададена на свита в зависимост от определени критерии.

Както и да е, с бутоните, разположени в стеков панел, съдържанието определя ширината на бутоните. Тъй като те трябва да споделят един и същ размер, аз ги поставям в мрежа, където колоните използват SharedSizeGroup.

След като направите това, бутоните вече споделят една и съща ширина, най-малката ширина, необходима за показване на бутона с най-голямо съдържание. Това обаче означава, че бутоните не се показват на необходимата позиция.

Тоест - приемете пет бутона в колони 0-4, където първият бутон е свит, в идеалния случай всички бутони трябва да се изместят наляво, така че винаги да заемат място отляво надясно. Има ли някакъв начин да постигна това или, ако не, как мога да накарам бутоните в stackpanel да споделят една и съща ширина?

Всяка помощ е много ценена.


person c95mbq    schedule 15.01.2011    source източник


Отговори (1)


Можете да обвиете бутоните си с отделни решетки и да ги използвате, за да зададете споделен размер, обхватът трябва да бъде стековият панел. След това контролирайте видимостта на отделните решетки вместо на бутоните, но това е малко объркващо.

Редактиране: Това вероятно е това, от което се нуждаете:

    <UniformGrid Rows="1" HorizontalAlignment="Left">
            ...
person H.B.    schedule 15.01.2011
comment
Опитах една решетка с индивидуални решетки в рамките на тях - видимостта на отделните решетки се свива в зависимост от критериите, които се поставят върху бутоните. Това обаче не работи, тъй като те споделят един и същи размер и така, ако някой от бутоните е видим, всички останали клетки пак ще заемат същото място... - person c95mbq; 16.01.2011
comment
Не трябва да създавате решетка около отделните решетки, което нарушава целта, трябва да поставите отделните решетки вътре в стеков панел. - person H.B.; 16.01.2011