VisualStateManager.VisualStateGroups İliştirilmiş Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Nesne koleksiyonunu VisualStateGroup alır veya ayarlar.
see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups
Örnekler
Aşağıdaki örnek, içeren bir Button için basit ControlTemplate bir Gridoluşturur. Ayrıca ve Normal
durumlarını MouseOver
tanımlayan adlandırılmış CommonStates
bir VisualStateGroup içerir. ayrıcaVisualStateGroup, kullanıcı fare işaretçisini üzerinde hareket ettiğinde yeşilden kırmızıya değişmesinin Grid yarım saniye sürdüğünü belirten bir VisualTransition de vardırButton.
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to trasition to the MouseOver state.-->
<VisualTransition To="MouseOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
mouse is over the button.-->
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
Açıklamalar
Her VisualStateGroup biri bir nesne koleksiyonu VisualState içerir. , VisualState denetim belirli bir durumdayken denetimin görünümünün nasıl değiştiğini belirten bir nesne koleksiyonu Storyboard içerir. Örneğin, basıldığında Button , basılmadığından biraz farklı bir görünüme sahip olabilir. öğesini tanımlayan Button iki durum, basıldığında ("Pressed"
) ve ( değilken"Normal"
) karşılık gelir.
Denetimde ekli özelliği ayarlayarak VisualStateGroups denetime eklersinizVisualState. Birbirini dışlayan durumları aynı VisualStateGroupiçine koyarsınız. Örneğin, iki CheckBox VisualStateGroup nesnesi vardır. Bunlardan biri, , Normal
, MouseOver``Pressed
ve Disabled
durumlarını içerir. Diğeri, , UnChecked
ve Indeterminate
durumlarını Checked
içerir. durumlarında CheckBox MouseOver
ve UnChecked
aynı anda olabilir, ancak ve Pressed
durumlarında MouseOver
aynı anda olamaz.
Herhangi bir öğeye nesne ekleyebilmenize VisualState rağmen, diğer kişilerin bir öğesinin görsel davranışını yeniden tanımlamasını sağlamanın özellikle yararlı bir Controlyoludur. kullanan ControlTemplatebir özel denetim oluşturursanız, sınıf tanımına bir TemplateVisualStateAttribute ekleyerek denetimin hangi durumlarda bulunabileceğini belirtebilirsiniz. Ardından, denetiminiz için yeni ControlTemplate bir oluşturan herkes şablona nesne ekleyebilir VisualState . Aynı olan durumlar aynı System.Windows.TemplateVisualStateAttribute.GroupName VisualStateGroupöğesine aittir.
içindeki nesnelerin nasıl kullanılacağı VisualStateGroup hakkında daha fazla bilgi için bkz. Bir ControlTemplate Oluşturarak Varolan Denetimin Görünümünü Özelleştirme.ControlTemplate kullanan VisualStateManagerdenetimlerin nasıl oluşturulacağı hakkında daha fazla bilgi için bkz. Özelleştirilebilir Bir Görünüme Sahip Denetim Oluşturma.