在WPF和Silverlight中的控件模板支持自定義控件的觀感
在定義控件時
部件(Parts)
所謂的部件(Parts)是指在空間模板中元素
在上圖中的Silder控件由四個部件構成
需要注意的一點是並不是所有的控件都具有部件
視覺狀態(Visual States)
視覺狀態是指控件定義的一系列狀態如MouseOver
默認狀態下
控件的視覺狀態在Silverlight
public sealed class VisualState : DependencyObject
{
public VisualState();
public string Name { get; }
public Storyboard Storyboard { get; set; }
}
狀態遷移(State Transitions)
狀態遷移是指控件從一個狀態過渡到另外一個狀態
狀態遷移在Silverlight
public class VisualTransition
{
public VisualTransition();
public Duration Duration { get; set; }
public string From { get; set; }
public Storyboard Storyboard { get; set; }
public string To { get; set; }
}
狀態組(StateGroups)
狀態組
從上表中我們可以看到
public sealed class VisualStateGroup : DependencyObject
{
public VisualStateGroup();
public string Name { get; }
public Collection<VisualState> States { get; set; }
public Collection<VisualTransition> Transitions { get; set; }
}
使用狀態組是一個非常棒的模型
控件的狀態和狀態組是通過TemplateVisualState特性來聲明的
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
[TemplateVisualStateAttribute(Name =
public class CheckBox : ToggleButton
{
//
}
視覺狀態管理器
我們再來看一下視覺狀態管理器的概念
public class VisualStateManager : DependencyObject
{
public static DependencyProperty CustomVisualStateManagerProperty;
public VisualStateManager();
public static VisualStateManager GetCustomVisualStateManager(DependencyObject obj);
public static Collection<VisualStateGroup> GetVisualStateGroups(DependencyObject obj);
public static bool GoToState(Control control
protected virtual bool GoToStateCore(Control control
string stateName
public static void SetCustomVisualStateManager(DependencyObject obj
VisualStateManager value);
}
視覺狀態管理器負責管理控件的狀態和狀態組以及狀態的遷移
狀態變化
外部事件觸發將會引起狀態的變化
總結
本文介紹了Silverlight
From:http://tw.wingwit.com/Article/program/net/201311/12255.html