WPF Rozwijane menu - jak zrobić ... (Listbox)?


(Przemek89k) #1

Hej,

posiadam Expression Blend i chciałbym zrobić rozwijane menu w WPF (C#) - oczywiście może to być jeden przycisk.

Zastanawiam się tylko j ak zrobić coś takiego - widziałem to na przykładzie Listboxa, że można wybrać jakiś element z tej listy i wtedy on zmienia swoje położenie trochę na prawo od reszty...

Po naciśnięciu innego elementu na liście, poprzedni element wraca na swoje początkowe położenie - chodzi mi właśnie o tą zależność, jak zrobić aby przycisk (albo element listboxa) po naciśnięciu na niego rozwinął się a wszystkie inne schowały ?

Może jakiś tutek, albo przykład ??

Podsumowując chodzi mi o wykonanie :

albo http://gallery.expression.microsoft.com/PeakingTabs

Jak takie coś zrobić - edytować listboxa, oraz zrobić aby po kliknięciu w przycisk inne, które uprzednio były aktywne wróciły do swojego początkowego kształtu ..?


(Frankfurterium) #2

Na pewno da się to osiągnąć na wiele sposobów.

Np. w każdy element ListBoxa wpakuj odpowiednio sformatowany button. Potem event, który sprawia, że aktywnemu buttonowi zwiększa lewy margines, a reszcie przywraca do normy.

Ułomność tego rozwiązania - button jest albo schowany, albo wysunięty. Nie ma stanów pośrednich (animacji wysuwania/chowania).


(Przemek89k) #3

To może inne pytanie jak wykonać samo Reverse animacji tzn. tak żeby wykonała się od tyłu (gdzie się zakończyła) do początku ?

Nie chcę ustawiać wartości autoreverse, gdyż mam włączony FillBehaviour na HoldOn i chcę aby przycisk stał w miejscu, gdzie animacja się skończyła, a gdy na niego ponownie kliknę to dopiero wróci do swojej poprzedniej pozycji ...