Upload
valentina-ovid
View
35
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Building Microsoft Silverlight Controls. Karen Corby Lead Program Manager Silverlight http://scorbs.com/work. “One major difference between a site with a strong Brand Image ... and one with weak Brand Image ... is that brand positioning permeates every part of a strong site ...” - PowerPoint PPT Presentation
Citation preview
Building Microsoft Silverlight Controls
Karen CorbyLead Program ManagerSilverlighthttp://scorbs.com/work
“One major difference between a site with a strong Brand Image ... and one with weak Brand Image ... is that brand positioning permeates every part of a strong site ...”
- Forrester, June 9, 2005
On The Menu
StylingSkinningData BindingLayout
Customizing Control Visuals
SkinningStyling
Styling
“Property Bag” Styling
<Style> element
Works with Controls, UserControls, Shapes, Panels
Styling
demo
Styling
demo
New Styling Features
BasedOn StylesExtend existing styles
Merged Resource DictionariesBreakout RDs into different files
Customizing Control VisualsSkinning
SkinningStyling
Completely replace visuals
<ControlTemplate> element
{TemplateBinding} extension
Works with Custom Controls (not UserControls, Panels,
Shapes)
Defining the Control ContractI need a
Thumb, Pressed state
etc..
I wonder what I need to put in my template…
I’ve got your Thumb,Pressed
state, etc..
Control Logic Control Visuals
Control.cs <ControlTemplate>
Custom Controls
Parts And States Model
GoalsMake it easy to skin your controlDefined separation between logic & visualsExplicit control contract
Recommended patternNot enforced by runtimeSupported by Blend
Parts
Named element (x:Name) in templateCode manipulates element in some way Not all Control Contracts have Parts
DownRepeatButton
UpRepeatButton
Thumb
Track
States
Visual look of control in a particular state<VisualState> elementNot all Control Contracts have States
MouseOver Pressed
Transitions
Visual look as control goes between states<VisualTransition> element
MouseOverPressed
VisualTransition
State Group
Set of mutually exclusive statesDifferent state groups are orthogonal<VisualStateGroup> element
MouseOver
Normal
ReadOnly
Disabled
Unfocused
Focused
Valid
InvalidUnfocused
ValidUnfocused
CommonStates
FocusStates
ValidationStates
Skinning
Replacing TextBox’s ControlTemplate
demo
Using States & Transitions
VisualStateManager.VisualStateGroupsAttached property on root visual of ControlTemplate
VisualStateGroupContains group of related states
VisualState classContains storyboard that represents visual look
VisualTransition classContains duration for automatic transition animationsContains storyboard for explicit transition animationDefault, or “To/From” transiitionsGeneratedEasingFunction coming SL3 Post-Beta
Validation
DataObject
Setter
<VisualState/>in
ControlTemplate
TextBox.Text={Binding}
New Value
New Value
Validation.Errors
BindingEngine
ExceptionValidation State Transition
Validation & Bindings
NotifyOnValidationErrorsValidatesOnExceptions
Binding flags. Initiate validations.
UpdateSourceTriggerNew Binding flag. Enable explicit update.
BindingExpression.UpdateSource()
Manually update associated Binding.
Bindings
RelativeSource BindingSelf & TemplatedParent as sourcePower of full binding in Templates
Attached DP sources, converters, two-way, etc
DependencyProperty as SourcesUpdate based on DP changes.
Validation UI "Out of Box"
TextBoxCheckBoxRadioButtonComboBoxListBoxPasswordBox (post-Beta)
Skinning in Blend
TextBox
demo
Binding & Styles
ElementName Binding“UI to UI Binding”FrameworkElement can be binding Source
Change Style at runtimeRemove “write once” Style limitation
Silverlight Styling vs WPF Styling
Implicit StylesSee Toolkit talk
Dynamic Resources
TriggersBlend’s Behaviors
Creating Custom Controls
Control Logic Control Visuals
Control.cs <ControlTemplate>
RatingControl
StarControlRatingControl
demo
Building a New Custom Control
Control subclass“Look-less” by default
generic.xamlResourceDictionary with Built-in Style
DefaultStyleKeyUsed to determine which built-in style to use
Creating The Control Class Logic
[TemplatePart] & [TemplateVisualState]
NOT used by runtime. Leveraged by tools.
public static VisualStateManager.GoToState()
Manages visual state change logic & transitions
Silverlight & WPF Skinning
Same Model
VisualStateManager in WPF Toolkit
See WPF/SL Talk
Layout
Custom Panels
Two pass algorithmsMeasureArrange
Layout: Measure
Layout:How much space do you think you need?
Panel:Let me ask my children…
Brb
Panel:OK, I asked each of them.OMG - I need 1000 x 800
Layout:Gotcha. 1000 x 800. ttys
Layout: Arrange
Layout:OK – Got the space for ya.Arrange yourself in here.
Panel:Will do. Let me go arrange all my children.
One sec.
Panel:OK, I gave them each some space at a specific
X,Y. BTW, here’s the space I actually ended up using.
Layout:Sweet. See you at the tables later? LOL!
Putting it Together
Using Our Controls with Layout
demo
Power of the Siverlight Control Model
StylingSkinningDataBindingLayout
A true branded experience permeates every aspect of you site.
Resources
My blog (will post video & source)http://scorbs.com/work
Wishpot APIs:http://www.wishpot.com/help/developers.aspx
Silverlighthttp://silverlight.net