Dziś kontynuacja nt. ContentControls

Kontenery

Label

Jaki Label jest każdy wie. Skupmy się zatem na tym co nowego/innego daje nam Label w WPF’ie.

Labelka ma ciekawe wsparcie dla klawiszy dostępu. Wystarczy, że napiszemy:

<Label Target=”{Binding ElementName=userName}”>_Nazwa użytkownikaLabel>

<TextBox x:Name=”userName” Width=”200″ />

A w run-time’ie po przyciśnięciu klawiszy ALT+N focus zostanie przeniesiony do pola TextBox. Aby coś takiego uzyskać musimy Labelce powiedzieć, której kontrolki ona dotyczy (właściwość Target) oraz zaznaczyć która litera ma być użyta jako znak dostępu (za pomocą pokreślenia _ ).

ToolTip

ToolTip’a też chyba nie trzeba nikomu przedstawiać. Jednak WPF daje nam możliwość dowolnej konfiguracji tej kontrolki. Może ona teraz zawierać nie tylko tekst, ale i bardziej złożone elementy. Kawałek kodu:

<TextBox x:Name=”userName” Width=”300″>

    <TextBox.ToolTip>

        <StackPanel>

            <TextBlock Background=”DarkRed” Foreground=”White”>OstrzeżenieTextBlock>

            <StackPanel Orientation=”Horizontal”>

                <Image Source=”warning.png” />

                <TextBlock>Nazwa użytkownika musi być wypełnionaTextBlock>

            StackPanel>

        StackPanel>

    TextBox.ToolTip>

TextBox>

i mamy całkiem ładnie wyglądającego ToolTip’a:

Dodatkowo jeśli tego potrzebujemy to ToolTip definiuje zdarzenia Open oraz Closed oraz dodatkowo klasa ToolTipService definiuje kilka właściwości które możemy wykorzystać. Są tam m.in.: ShowDuration – jak długo ToolTip ma być widoczny, ShowOnDisabled – czy elementy, które są zablokowane również pokazują ToolTip i jeszcze parę innych

Frame

O tej kontrolce było już przy okazji opisu Page Web navigation. Warto tylko przypomnieć, że Frame może wyświetlać zarówno strony napisane w XAML’u jaki i HTML’u.

Następnym razem ostatnia część sagi o ContentControl a konkretniej o Containers with a Header.