Pokazywanie postów oznaczonych etykietą Silverlight 4. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Silverlight 4. Pokaż wszystkie posty

niedziela, 2 maja 2010

Silverlight Center And Scale Behavior

W ostatnim poście pisałem o tym jak wyśrodkować i skalować aplikację. Tym razem poszedłem o krok dalej i stworzyłem prosty behavior który z łatwością podłączymy do każdej aplikacji i nie musimy modyfikować istniejącego kodu.

Co należy zrobić?
1. Ściągnąć kod bahaviora:  http://gallery.expression.microsoft.com/en-us/CenterAndScale
2. Podłączyć kod do aplikacji:
<usercontrol .....="" ....="" xmlns:behavior="clr-namespace:CenterAncScaleBehavior;assembly=CenterAncScaleBehavior" xmlns:interaction="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">

    <interaction:interaction.behaviors>
        <behavior:centerancscalebehavior>
    </behavior:centerancscalebehavior>

    <grid> ... </grid>
</interaction:interaction.behaviors>
</usercontrol>
3. Gotowe. W 95% aplikacji powinno działać. :]

Jeżeli używacie Microsoft Expression Blend-a, wystarczy przeciągnąć klasę na aplikację (patrz video).

Prezentacja, a więc behavior w akcji (66 sekund)


Prosty przykład działania
Aplikacja bez behaviora:  http://bit.ly/cVinEC
Aplikacja już z podłączonym bahaviorem: http://bit.ly/ba8UsI

Nie bangla?
Behavior powinień działać dla więkoszości aplikacji ale niekoniecznie dla wszystkich. Jeśli macie specyficzne ustawienia, stałe rozmiary dla UserControl itp., to bez zmian w aplikacji niestety skalowanie nie zadziała.

Pozdrawiam,
Jacek Ciereszko

Jak wyśrodkować i skalować aplikację przy użyciu ViewBox-a

Istnieje wiele sposobów na skalowanie i wyśrodkowanie aplikacji Silverlight w przeglądarce. Zwykle używamy dwóch kontrolek typy Grid do pozycjonowania oraz panela (np. Canvy) do skalowania aplikacji.

Takie rozwiązanie może wyglądać np. tak:

<UserControl … >
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
            <Canvas x:Name="scalePanel" VerticalAlignment="Top" HorizontalAlignment="Center">
                …
            </Canvas>
        </Grid>
    </Grid>
</UserControl>
Zaprezentowany sposób przy odpowiednim dopieszczeniu działa bez zarzutów ale można prościej. Jak? Otóż używając kontrolki ViewBox która posiada wewnętrzne mechanizmy skalowania zawartości, a umieszczona w Gridzie, zapewni kompleksowe rozwiązanie.

Dobre rozwiązanie:
<UserControl … >
    <Grid x:Name="LayoutRoot" Background="White">
        <Viewbox>
            ...
        </Viewbox>
    </Grid>
</UserControl>

Jak znaleźć ViewBoxa?

Ci którzy używają Silverlight 4 posiadają kontrolkę ViewBox natywnie wbudowaną i dostępna w każdym typie aplikacji. Natomiast dla aplikacji które zostały stworzone w Silverlight 3, ViewBox jest dostępny w pakiecie Microsoft Silverlight Toolkit.

Demo

Stwórzmy prostą aplikację która będzie zawierać: przycisk, pole tekstowe oraz czerwony kwadrat. Aplikacja będzie posiadała także odpowiedni margines, w postaci: 100 od lewej, 50 od góry, 100 od prawej i 50 od dołu. Na początku aplikacja nie będzie ani skalowana, ani wyśrodkowana:

<UserControl … >
    <Grid x:Name="LayoutRoot">
        <Grid Margin="100, 50, 100, 20">
                <StackPanel Orientation="Horizontal">
                    <Button Width="100" Height="100" Content="test"/>
                    <TextBlock Text="Button" Width="100" Height="100" />
                    <Rectangle Width="100" Height="100" Fill="Red"/>
                </StackPanel>
        </Grid>
    </Grid> 
</UserControl> 

Uruchom demo: RUN

Natomiast jeśli wprowadzimy drobną modyfikację i dodamy kontrolkę ViewBox, otrzymamy pożądany efekt.
<Grid x:Name="LayoutRoot">
        <Viewbox>
            <Grid Margin="100, 50, 100, 20">
                    <StackPanel Orientation="Horizontal">
                        <Button Width="100" Height="100" Content="test"/>
                        <TextBlock Text="bottom" Width="100" Height="100" />
                        <Rectangle Width="100" Height="100" Fill="Red"/>
                    </StackPanel>
            </Grid>
        </Viewbox>
    </Grid>

Uruchom demo: RUN (Zmień wielkość okna żeby zobaczyć skalowanie)
Link do źródeł: SilverlightCenterApplication.zip


References


 

Jacek Ciereszko

czwartek, 8 kwietnia 2010

Windows Phone 7 i PRISM [WSSG]

Zapraszamy wszystkich chętnych na szóste spotkanie grupy Warsaw Silverlight Study Group (WSSG). Spotkanie rozpocznie się 13 kwietnia (wtorek), o godzinie 18:00 w siedzibie firmy Microsoft w Warszawie (al. Jerozolimskie 195A - zobacz na mapie).   

Agenda spotkania:
18:00 – 19:20 Marcin Kruszyński: "Aplikacje Silverlight na Windows Phone 7";

19:20 – 19:40 Przerwa;
19:40 – 21:00 Jan Marowski: "Navigation Framework w Silverlight 3";


Wtorkowe spotkanie rozpoczniemy prezentacją Marcina Kruszyńskiego. Marcin na co dzień pracuje jako programista i architekt w centrum badawczo-rozwojowym w firmie Comarch, CTO sektora ERP. Interesuje się wieloma aspektami platformy .NET oraz specjalizuje w implementacji bogatych interfejsów graficznych aplikacji, w oparciu o WPF i Silverlight. Pasjonat nowych trendów i technologii. Zawodowo technologią Silverlight zajmuje się od połowy 2008 roku. Prowadził warsztaty z Silverlight w ramach KGD.NET w Krakowie. 

Marcin opisał swoją sesję następująco: "Umiesz pisać aplikacje w Silverlight? A czy wiesz, że dysponując tą wiedzą możesz łatwo zacząć tworzyć rozwiązania na platformę Windows Phone 7? Hola! - zakrzykną sceptycy. Podobieństwo w tworzeniu aplikacji w oparciu o te same narzędzia, nie oznacza że aplikacje będą takie same! Tak, są różnice. Jakie? O tym opowiemy na prezentacji. Oprócz pewnych ograniczeń i zmian, postaramy się także przybliżyć nowe możliwości wynikające z funkcjonalności samego telefonu.".

Natomiast po przerwie gościć będziemy Jan Marowskiego. Jan opisał siebie następująco: "Na co dzień zajmuję się tworzeniem oprogramowania dla sektora bankowego, ubezpieczeniowego i telekomunikacyjnego w firmie Infovide-Matrix. Przygodę z Silverlightem rozpocząłem od wersji 2.0 preview 5. Od tego czasu starałem się z różnymi skutkami zainteresować Silverlightem osoby decyzyjne u mnie w firmie, co zaowocowało aktualnie prowadzonym przeze mnie projektem w Silverlight 3." 

Jan w trakcie swojej prezentacji przedstawi nam mechanizmy Routingu w Silverlight. Będzie to przegląd standardowych mechanizmów, jak i możliwości jaki daje nam framework PRISM.

Strona spotkania: http://ms-groups.pl/wssg/6_spotkanie

Udział w spotkaniu jest bezpłatny. Wskazana rejestracja (tutorial do rejestracji).


Zapraszamy! 

 

poniedziałek, 15 marca 2010

Silverlight 4.0 RC

Kilka godzin temu Microsoft wydał nową wersję Silverlighta 4.0 RC :)Wraz z nią pojawiło się także wiele nowości i ułatwień, których nie będę tutaj wymieniał bo jest ich zbyt wiele. Pozwolę sobie tylko polecić Wam bloga Tima Heuera (http://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx), a sam oddale się w zgłębiania tego co dostarczyła nam ta nowa wersja :)

PS. polecam zerknąć na Windows Mobile 7 ;)

Linki:

poniedziałek, 1 lutego 2010

Czwarte spotkanie Warsaw Silverlight Study Group (WSSG)

Zapraszam wszystkich chętnych na czwarte spotkanie grupy Warsaw Silverlight Study Group (WSSG). Spotkanie rozpocznie się 9 lutego (wtorek), o godzinie 18:00 w siedzibie firmy Microsoft w Warszawie (al. Jerozolimskie 195A - zobacz na mapie).   

 WSSG logo
Agenda spotkania:
18:00 – 19:20 Robert Kosek: "Prototypowanie aplikacji za pomocą SketchFlow. Microsoft Expreession Studio. Tips&Tricks.";

19:20 – 19:40 Przerwa;
19:40 – 21:00 Tomasz Kustra: "Binding, Convertery oraz moja własna kontrolka w Silverlight 3.0 i 4.0";


Spotkanie w lutym rozpocznie Robert Kosek. Robert na co dzień pracuje w firmie Datapolis.com na stanowisku RIA Designer/Developer gdzie zajmuje się rozwiązaniami opartymi o technologie Microsoft(.NET/Sharepoint). W trakcie swojej prezentacji przedstawi nam pakiet Microsoft Expression z szczególnym nastawieniem na SketchFlow. Dodatkowo całość będzie uświetniona zestawem ciekawych Tips&Tricków w Silverlightcie. 

Po przerwie gościć będziemy Tomasza Kustrę, osobę z 20 letnim doświadczeniem w IT, pracownika firmy CC Sp. z o.o. Warszawa. Tomasz przez lata pracował na różnych stanowiskach i zebrał niesamowity bagaż doświadczeń którymi chętnie podzieli się z nami w czasie prezentacji. Tomasz opowie nam o Bindingu w Silverlight i wszystkich aspektach z tym związanych. Zobaczymy jak powinno się tworzyć Convertery, a także walidować, grupować oraz filtrować dane. Tomasz pokaże także jak stworzyć swoją własną kontrolkę oraz wszelkiego rodzaju Property które pozwolą na swobodne jej używanie w kodzie XAML. 

Strona spotkania: http://ms-groups.pl/wssg/4_spotkanie/
Udział w spotkaniu jest bezpłatny. Wskazana rejestracja (tutorial do rejestracji).

Zapraszam!


 


 


 

poniedziałek, 30 listopada 2009

Trzecie spotkanie grupy Warsaw Silverlight Study Group (WSSG).

Zapraszam wszystkich chętnych na trzecie spotkanie grupy Warsaw Silverlight Study Group (WSSG). Spotkanie rozpocznie się 8 grudnia (wtorek), o godzinie 18:00 w siedzibie firmy Microsoft w Warszawie (al. Jerozolimskie 195A - zobacz na mapie).   


Agenda spotkania:
18:00 – 19:20 Bartosz Lipiński: "WCF RIA Services - Aplikacje biznesowe zorientowane na zasoby";

19:20 – 19:40 Przerwa;
19:40 – 21:00 Cezary Suchowolec: "Najciekawsze nowości w Silverlight 4 Beta";

Grudniowe spotkanie rozpoczniemy od tematu "WCF RIA Services - Aplikacje biznesowe zorientowane na zasoby" o którym opowie nam Bartosz Lipiński. W czasie tej sesji zobaczymy między innymi jak zacząć pracę z RIA Services, plusy i minusy tego rozwiązania oraz jak używać tej technologii w aplikacjach biznesowych.

Druga część spotkania będzie w całości poświęcona nowościom w Silverlight 4 które zaprezentuje nam Cezary Suchowolec. Sesja ta to esencja ze wszystkich nowości jakie niesie ze sobą nowy Silverlight 4 w wersji Beta. Dzięki kilku przydatnym demom, zobaczymy jak je używać oraz jak je zastosować w już działających aplikacjach.

Strona spotkania: http://ms-groups.pl/wssg/3_spotkanie/

Udział w spotkaniu jest bezpłatny. Wskazana rejestracja (tutorial do rejestracji).

Zapraszam!

środa, 18 listopada 2009

[Silverlight 4 nowości] WebBrowser

Kilka godzin temu pojawiła się nowa wersja Silverlighta 4, a wraz z nią setki nowości (tak, tak, nie przesadzam.. setki!!! J ). Te najważniejsze znajdziecie chociażby w artykule Bartłomieja Zassa czy też na blogu Tim'a lub Mike'a. Ja swoją przygodę rozpoczynam od kontrolki WebBrowser, a więc czegoś co pozwoli mi wreszcie na wyświetlenie kodu html w aplikacji Silverlight :]

Niestety nie wszystko tak pięknie działa jak byśmy mogli sobie to wymarzyć i już na początku zobaczymy, że kontrolka ta działa tylko gdy uruchamiamy aplikację jako "zainstalowaną lokalnie", czyli OutOfBrowser (OOB) i dodatkowo aplikacji powinna mieć włączony tryb działania z pełnymi uprawnieniami (to również nowości w Silverlight 4) jeśli chcemy oglądać strony które nie należą do nas (cross-domain-policy). Mimo to, kontrolka działa, a kod z niej wygenerowany wygląda jak z przeglądarki :)

Demo

Zaczynamy od instalacji Silverlight 4 (http://silverlight.net/getstarted/silverlight-4-beta/ ), a więc pobieramy Silverlight 4 Tools for Visual Studio 2010 i instalujemy (zakładam że macie już Visual Studio 2010 Beta 2 - download). Po instalacji tworzymy nowy projekt Silverlight i w momencie zapytania o wygenerowanie projektu Web, wybieramy z listy Silverlight 4 (patrz rysunek).


W nowym Visual Studio 2010 + Silverlight 4 mamy kolejną nowość w postaci pełnego edytora xaml-a, a więc Blend 3 nie będzie już nam aż tak potrzebny :]

WebBrowser

Dodajemy w XAML kontrolkę WebBrowser oraz nazwę, tak abyśmy mogli odwołać się do niej z code-behind. Np. w ten sposób:

<UserControl x:Class="SilverlightApplication1.MainPage"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   mc:Ignorable="d"
   d:DesignHeight="300" d:DesignWidth="400">
   <Grid x:Name="LayoutRoot" Background="White">
      <WebBrowser x:Name="webBrowser" />
   </Grid>
</UserControl>
Następnie w code-behind dodajemy ładowanie adresu:

public MainPage()
{
   InitializeComponent();
   this.Loaded += (o, e) => { webBrowser.Navigate(new Uri("http://microsoft.com", UriKind.Absolute)); };
}
Ostatnim krokiem jest włączenie opcji instalacji aplikacji (OOB) oraz włączenie potrzeby użycia większych uprawnień. Jeżeli nie włączymy zwiększenia uprawnień dla naszej aplikacji, będziemy mogli oglądać tylko strony które mają ustawiony dla nas cross-domain-policy lub strony wygenerowane z naszego kodu html (a więc poprzez opcję NavigateString, gdzie parametrem jest kod html).

W celu włączenia wszystkiego, klikamy prawym na projekcie Silverlightowym i wybieramy Properites:



Run and Fun

Jeśli wszystko się kompiluje, jesteśmy gotowi aby sprawdzić działanie naszej przeglądarki. Uruchamiamy aplikację i klikamy prawym klawiszem myszki gdziekolwiek. Z otwartego menu wybieramy opcję "Install …. onto this computer "


A następnie w nowym oknie opcję "Install". Zwróćcie uwagę, że skoro zaznaczyliśmy opcję potrzeby używania dodatkowych uprawnień, użytkownik otrzymuje o tym informację przed instalacją (patrz rysunek).


Kiedy aplikacja zainstalowana lokalnie uruchomi się, powinniśmy zobaczyć działającą stronę internetową wewnątrz naszej aplikacji Silverlight.




Pod prawym klawiszem myszki będziemy mieli menu prosto z przeglądarki, a nie z aplikacji Silverlight. Co fajniejsze, jeśli wejdziemy np. na http://youtube.com, zobaczymy że aplikacje Flash, czy też Silvelright również działają.

PS. W ramach zabawy próbowałem otworzyć moją aplikację Silverlight w aplikacji Silverlight, ale niestety, a raczej i dobrze!, Silverlight nie pozwolił zainstalować się ponownie z samego siebie. Aplikacja wykryła że jest zainstalowana. ;]

Moje demo

W ramach zabawy stworzyłem swoją mini przeglądarkę dostępną pod poniższym adresem (pamiętajcie o potrzebie jej zainstalowania przed użyciem):
Run demo

Przycisk "Przejdź" otwiera stronę spod wpisanego adresu, a "Hello World" generuje stronę z kodu html podanego jako string. Okno jest podzielone na dwie części, lewa jest to kontrolka WebBrowser która wyświetla stronę html, a prawa to Rectangle który jest malowany nowym typem brusha, "HtmlBrush". W momencie załadowania się strony, na Rectangle wywołuję metodę "Redraw()" i maluje wszystkim co znajduje się w kontrolce WebBrowser. Możemy także go odmalować klikając przycisk "Odmaluj".

Jak zapewne sami zauważyliście, próbowałem zrobić coś z Projection, niestety kontrolka WebBrowser sama poddaje się tym operacjom, ale już wyświetlona zawartość jest normalnie odwzorowana. A szkoda, już myślałem że będę mógł czytać sobie bloga do góry nogami :D

Kod źródłowy do dema:
WebBrowserDemo.zip
Słowem zakończenia, chciałem tylko podkreślić że wymienione funkcjonalności to nie wszystko. W internecie już możemy się doszukać przykładów z odwołaniem do kodu javascript i na odwrót, a więc całkiem pokaźny zbiór nowych możliwości.

Pozdrawiam i lecę do innych nowinek.. :]

Jacek Ciereszko