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 ControlTemplate için basit Button bir Gridoluşturur. Ayrıca ve VisualStateGroup durumlarını CommonStates tanımlayan adlı MouseOverbir Normal içerir.
VisualStateGroup ayrıca, kullanıcı fare işaretçisini üzerinde VisualTransitionhareket ettiğinde yeşilden kırmızıya geçmesi için yarım saniye Grid sürdüğünü belirten bir Button de vardır.
<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. öğesinin tanımladığı Button iki durum, basıldığında ("Pressed") ve basılmadığında ("Normal") karşılık gelir.
Denetimde ekli özelliği ayarlayarak VisualState denetime eklersinizVisualStateGroups. Birbirini birbirini dışlayan durumları aynı VisualStateGroupiçine koyarsınız. Örneğin, iki CheckBoxVisualStateGroup nesnesi vardır. Bunlardan biri, , NormalMouseOver, Pressedve Disableddurumlarını içerir. Diğeri, , CheckedUnCheckedve Indeterminatedurumlarını içerir.
CheckBox durumlarında MouseOver ve UnChecked aynı zamanda olabilir, ancak ve MouseOver durumlarında Pressed aynı anda olamaz.
Herhangi bir öğeye nesne ekleyebilmenize VisualState rağmen, diğer kişilerin bir görsel davranışını yeniden tanımlamalarını sağlamak için özellikle yararlı bir Controlyoldur. 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ı System.Windows.TemplateVisualStateAttribute.GroupName olan durumlar aynı öğesine VisualStateGroupaittir.
içinde nesneleri kullanma VisualStateGroup hakkında daha fazla bilgi için bkz. ControlTemplate. kullanan VisualStateManagerdenetimler oluşturma hakkında daha fazla bilgi için bkz. Özelleştirilebilir Bir Görünüme Sahip Denetim Oluşturma.