2008-11-03 14 views
16

Chciałbym utworzyć wyskakujące okno dialogowe w silverlight, w którym mogę manipulować kontrolkami, wprowadzać dane i zwracać wartość. Chcę, żeby była modalna, więc gdy jest otwarta, strona "Poniżej" jest niedostępna. Nie znalazłem jeszcze łatwego sposobu na zrobienie tego. Jakieś sugestie?Jak utworzyć okno dialogowe Popup w Silverlight?

Odpowiedz

12

Znam pytanie zadane za pomocą Silverlight 2 rozwiązania, ale w Silverlight 3 (Beta teraz, RTW w lipcu 2009 roku) jest wbudowany ChildWindow że można zrobić wszystko, czego szukasz.

+2

Oto przewodnik do okien podrzędnych: http://www.wintellect.com/CS/blogs/jprosise/archive/2009/04/29/silverlight-3 -s-new-child-windows.aspx –

+0

ChildWindows są już dostępne po wysłaniu Silverlight 3. Są łatwe w użyciu, mają dobry wzór użycia i wyglądają oszałamiająco! –

1

Jestem nowy w ramach Sliverlight i dopiero zaczynam to rozgryźć, ale mam podobne zapotrzebowanie na modalne okno dialogowe. Właśnie wypróbowałem pomysł, który wygląda obiecująco:

  1. Utworzono prostokąt (o nazwie "Tarcza"), który obejmuje cały obszar aplikacji. Istnieje na szczycie wszystkiego w głównej aplikacji. Ustawiłem pędzel do wypełnienia na biały, a pędzel przezroczysty na 81%, aby pokazać zawartość głównej aplikacji, ale lekko (jak w przypadku wyłączenia). Następnie upewnij się, że "Tarcza" jest testowalna. Teraz, gdy "Tarcza" jest widoczna, to w efekcie zablokuje wszystkie wejścia do kontrolek poniżej (przynajmniej z myszy, jeszcze nie próbowałem klawiatury). Po uruchomieniu aplikacji ustaw widoczność "Tarcza" na zwiniętą. W tym stanie nie zablokuje wejścia do głównej aplikacji.
  2. Okno dialogowe jest następnie konstruowane na innym elemencie canvas, który istnieje w kolejności zx na górze ekranu. Zwykle okno dialogowe będzie niewidoczne, ale kiedy go potrzebuję, po prostu ustawiam "Osłonę" na widoczną, a okno dialogowe na widoczną. Ponieważ dialog jest na szczycie "Tarcza", otrzymuję bardzo modalne zachowanie. Gdy okno dialogowe zostanie zamknięte, ponownie zignoruj ​​zarówno płótno dialogowe, jak i "Osłonę" na płótnie, a główna aplikacja znów będzie aktywna.

Jestem pewien, że jest to najbardziej brutalny sposób na zrobienie tego i że w końcu zgodzę się na bardziej elegancką konstrukcję, ale działa na razie.