Mix08 Session – Silverlight Controls

Again, really a set of shorthand notes but hopefully a few nuggets in here that you might find useful...

User Controls

  • Fixed look with some logic

  • Split large pages into smaller chunks

  • Re-use

  • Root XAML element is UserControl and partial class derives from UserControl

  • Replaces 1.1's Control.InitializeFromXaml()

  • Can do anything in UserControl you can do in Page

NB handling of KeyDown even now supported at the element level (rather than application level)


  • Full keyboard accessibility

    • Full tab nav support

    • Full focus suport

    • Can implement own directioanal nav

  • Screen Reader support coming in Beta 2

    • Based on UIAutomation

    • Video will be available soon on Mix site

  • Some additional work in progress for Section 508 compliance

Custom Controls

Define behviour but allow UI to change - styling and skinning

  • Styling

    • Tweak minor visuals by setting properties

    • Or use Style property bag

      • Define as a resource (eg in Application.Resources)

      • Style element contains Setter elements that define property/value pairs

      • x:Key defines a reference for the style

      • Usage syntax eg <TextBox Style='{StaticResource StyleKey}' Text='... />

    • Differences to WPF

      • Write once - cannot clear styles or swap styles at runtme

      • Application level styles not supported (eg all buttons)

      • BasedOn styles not supported

  • Skinning

    • Allows you to completely replace control visuals

    • Uses ControlTemplate to define control visuals

    • Can use TemplateBindings to bind control properties to user defined usage properties

Custom controls come in useful where you want custom logic but allow designers to override visuals

  • Custom Control definition

    • Derive from Control

    • No default visuals - need to specify this in generic.xaml compiled into assembly as resource

      • Contains a ResourceDictionary

      • Defines Styles including the Template / ControlTemplate that specifies the visuals

  • Parts Model

    • Goals

      • How to structure your control

      • Defined separation between control logic and visuals

      • Explicit control contract

      • Recommended pattern - not enforced by runtime

      • Will be supported by Blend

    • What is it?

      • Element Parts

        • Named element in template

        • Type: FrameworkElement, Panel, Button etc

        • Control element will control element in some way

      • State Parts

        • Keyed resource inside template's root element

        • Type:Storyboard

        • Control logic begins and stops storyboard

      • Allows you to call out explicitly which parts the control template is expecting so the behaviours can be maintained when the template is modified

Technorati Tags: ,

Comments (2)

  1. arul vigg says:

    great article well written and wonderfully crafted!!

    by arul vigg.

Skip to main content