Aracılığıyla paylaş


VisualStateManager Sınıf

Tanım

Durumları ve denetimler için durumlar arasında geçiş mantığını yönetir.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Devralma

Örnekler

Aşağıdaki örnek bir Rectangle oluşturur ve ekli özelliğe bir VisualStateGroup adlandırılmış CommonStatesVisualStateManager.VisualStatesGroups ekler. Örnek içindeki MouseOverCommonStatesVisualStateGroupve NormalVisualState nesnelerini tanımlar. Kullanıcı fare işaretçisini üzerinde Rectanglehareket ettiğinde, yarım saniye boyunca kırmızıdan yeşile dönüşür. Kullanıcı fareyi dikdörtgenden uzaklaştırdığında, Grid hemen kırmızıya döner. Durumunun Normal bir Storyboardtanımlamadığını unutmayın. durumundan StoryboardRectangle duruma geçişler MouseOver yapıldığında için MouseOverStoryboard durdurulduğundan Normal ve Color özelliği kırmızıya döndürdüğündenSolidColorBrush, bir gerekli değildir.

<Rectangle Name="rect" 
           Width="100" Height="100"
           MouseEnter="rect_MouseEvent" 
           MouseLeave="rect_MouseEvent">
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup Name="MouseStates">
      <VisualState Name="MouseEnter">
        <Storyboard>
          <ColorAnimation To="Green" 
                          Storyboard.TargetName="rectBrush" 
                          Storyboard.TargetProperty="Color"/>
        </Storyboard>
      </VisualState>
      <VisualState Name="MouseLeave" />
      <VisualStateGroup.Transitions>
        <VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>

        <VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
          <VisualTransition.GeneratedEasingFunction>
            <ExponentialEase EasingMode="EaseOut" Exponent="10"/>
          </VisualTransition.GeneratedEasingFunction>
        </VisualTransition>

      </VisualStateGroup.Transitions>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectBrush" Color="Red"/>
  </Rectangle.Fill>
</Rectangle>

Aşağıdaki örnek, önceki örnekte tanımlanan olay işleyicisini gösterir ve durumlar arasında geçiş yapmak için yöntemini çağırır GoToElementState . Önceki örnekteki dikdörtgen bir ControlTemplateöğesinin parçasıysa, örneğin yöntemini çağırması GoToState gerekir.

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
    If rect.IsMouseOver Then
        VisualStateManager.GoToElementState(rect, "MouseEnter", True)
    Else
        VisualStateManager.GoToElementState(rect, "MouseLeave", True)
    End If
End Sub

Açıklamalar

denetimin VisualStateManager durumlarını, belirli bir durumdayken denetimin görünümünü ve denetim durumlarını değiştirdiğinde belirtmenizi sağlar. Ö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. Bir durumdayken denetimin görünümü, tarafından VisualStatetanımlanır. , VisualState denetim söz konusu durumdayken denetimin görünümünün nasıl değiştiğini belirten bir nesne koleksiyonu Storyboard içerir. Denetimde ekli özelliği ayarlayarak denetime VisualStateManager.VisualStateGroups görsel durumlar eklersiniz. Her VisualStateGroup biri birbirini dışlayan bir nesne koleksiyonu VisualState içerir. Diğer bir ifadeyle, denetim her zaman için VisualStateGrouptam olarak bir durumundadır.

ayrıca VisualStateManager , bir denetimin belirli bir duruma ne zaman gireceğini belirtmenizi sağlar. Durum değiştirmek için çağırmanız gereken yöntem senaryonuza bağlıdır. içinde ControlTemplatekullanan VisualStateManager bir denetim oluşturursanız yöntemini çağırınGoToState. kullanan VisualStateManagerdenetimler oluşturma hakkında daha fazla bilgi için bkz. Özelleştirilebilir Bir Görünüme Sahip Denetim Oluşturma. bir öğesinin dışını kullanıyorsanız (örneğin, bir içinde veya tek bir öğede kullanıyorsanız UserControlVisualStateManager), yöntemini çağırınGoToElementState.VisualStateManagerControlTemplate Her iki durumda da, VisualStateManager ilgili durumla ilişkili görsel taslakları uygun şekilde başlatmak ve durdurmak için gereken mantığı gerçekleştirir. Örneğin, bir denetimin her biri kendisiyle ilişkilendirilmiş bir görsel taslak içeren ve State2durumlarını State1 tanımladığını varsayalım. Denetim içindeyse State1 ve veya GoToElementStateöğesine GoToState geçirirsenizState2, VisualStateManager görsel taslak içinde State2 başlatılır ve içindeki görsel taslak State1durdurulur.

Windows Presentation Foundation(WPF) ile birlikte gelen denetimler, görsel durumlarını değiştirmek için öğesini VisualStateManager kullanır. WPF ile birlikte gelen bir denetim için bir ControlTemplate oluşturduğunuzda, denetimin ControlTemplate görünümünü belirli bir durumda belirtmek için denetimlere nesneler ekleyebilirsinizVisualState. WPF ile birlikte gelen denetimlerin görsel durumlarının adlarını bulmak için bkz. Denetim Stilleri ve Şablonları. Denetimin mantığı, durumlar arasında geçişi işler, bu nedenle yeni ControlTemplateiçindeki nesneleri tanımlamak VisualState dışında bir şey yapmanız gerekmez. Mevcut denetimler için denetim şablonları oluşturma hakkında daha fazla bilgi için bkz. Denetim için şablon oluşturma.

Durumlar arasında geçiş yapmak için kendi mantığınızı uygulamak istiyorsanız, öğesinden VisualStateManagerdevralmanız, yöntemini geçersiz kılmanız GoToStateCore ve özel mantığı kullanan denetimde ekli özelliği ayarlamanız VisualStateManager.CustomVisualStateManager gerekir.

Oluşturucular

Name Description
VisualStateManager()

VisualStateManager sınıfının yeni bir örneğini başlatır.

Alanlar

Name Description
CustomVisualStateManagerProperty

CustomVisualStateManager Bağımlılık özelliğini tanımlar.

VisualStateGroupsProperty

VisualStateGroups Bağımlılık özelliğini tanımlar.

Özellikler

Name Description
DependencyObjectType

DependencyObjectType Bu örneğin CLR türünü sarmalayan öğesini alır.

(Devralındığı yer: DependencyObject)
Dispatcher

Dispatcher Bunun DispatcherObject ilişkili olduğu öğesini alır.

(Devralındığı yer: DispatcherObject)
IsSealed

Bu örneğin şu anda korumalı (salt okunur) olup olmadığını gösteren bir değer alır.

(Devralındığı yer: DependencyObject)

İliştirilmiş Özellikler

Name Description
CustomVisualStateManager

Denetimin VisualStateManager durumları arasında geçiş yapılan nesneyi alır veya ayarlar.

VisualStateGroups

Nesne koleksiyonunu VisualStateGroup alır veya ayarlar.

Yöntemler

Name Description
CheckAccess()

Çağıran iş parçacığının bu DispatcherObjectöğesine erişimi olup olmadığını belirler.

(Devralındığı yer: DispatcherObject)
ClearValue(DependencyProperty)

Bir özelliğin yerel değerini temizler. Temizlenecek özellik bir DependencyProperty tanımlayıcı tarafından belirtilir.

(Devralındığı yer: DependencyObject)
ClearValue(DependencyPropertyKey)

Salt okunur özelliğin yerel değerini temizler. Temizlenecek özellik tarafından DependencyPropertyKeybelirtilir.

(Devralındığı yer: DependencyObject)
CoerceValue(DependencyProperty)

Belirtilen bağımlılık özelliğinin değerini zorlama. Bu, çağrısında CoerceValueCallbackvar olan bağımlılık özelliği için özellik meta verilerinde belirtilen herhangi bir DependencyObject işlevi çağırarak gerçekleştirilir.

(Devralındığı yer: DependencyObject)
Equals(Object)

Sağlanan DependencyObject öğesinin geçerli DependencyObjectile eşdeğer olup olmadığını belirler.

(Devralındığı yer: DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

CustomVisualStateManager Ekli özelliği alır.

GetHashCode()

Bu DependencyObjectiçin bir karma kodu alır.

(Devralındığı yer: DependencyObject)
GetLocalValueEnumerator()

Hangi bağımlılık özelliklerinin bu DependencyObjectüzerinde yerel olarak ayarlı değerlere sahip olduğunu belirlemek için özel bir numaralandırıcı oluşturur.

(Devralındığı yer: DependencyObject)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
GetValue(DependencyProperty)

Bir öğesinin bu örneğindeki bir bağımlılık özelliğinin DependencyObjectgeçerli etkin değerini döndürür.

(Devralındığı yer: DependencyObject)
GetVisualStateGroups(FrameworkElement)

VisualStateGroups Ekli özelliği alır.

GoToElementState(FrameworkElement, String, Boolean)

öğesini iki durum arasında geçişler. Bir denetim tarafından tanımlandığı yerine bir uygulama tarafından tanımlanan durumları geçiş yapmak için bu yöntemi kullanın.

GoToState(FrameworkElement, String, Boolean)

Denetimi iki durum arasında geçişler. denetimindeki ControlTemplatedurumlara geçiş yapmak için bu yöntemi kullanın.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

Durumlar arasında bir denetime geçişler.

InvalidateProperty(DependencyProperty)

Belirtilen bağımlılık özelliği için geçerli değeri yeniden değerlendirir.

(Devralındığı yer: DependencyObject)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Bunun DependencyObject üzerindeki herhangi bir bağımlılık özelliğinin etkin değeri her güncelleştirildiğinde çağrılır. Değiştirilen belirli bağımlılık özelliği olay verilerinde bildirilir.

(Devralındığı yer: DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Belirtilen VisualStateGroup nesnede olayı tetiklerCurrentStateChanging.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Belirtilen VisualStateGroup nesnede olayı tetiklerCurrentStateChanging.

ReadLocalValue(DependencyProperty)

Varsa, bağımlılık özelliğinin yerel değerini döndürür.

(Devralındığı yer: DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Bir bağımlılık özelliğinin değerini, değer kaynağını değiştirmeden ayarlar.

(Devralındığı yer: DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

CustomVisualStateManager Ekli özelliği ayarlar.

SetValue(DependencyProperty, Object)

Bağımlılık özelliği tanımlayıcısı tarafından belirtilen bir bağımlılık özelliğinin yerel değerini ayarlar.

(Devralındığı yer: DependencyObject)
SetValue(DependencyPropertyKey, Object)

Bağımlılık özelliğinin tanımlayıcısı tarafından belirtilen salt okunur bağımlılık özelliğinin DependencyPropertyKey yerel değerini ayarlar.

(Devralındığı yer: DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Serileştirme işlemlerinin sağlanan bağımlılık özelliği için değeri serileştirmesi gerekip gerekmediğini gösteren bir değer döndürür.

(Devralındığı yer: DependencyObject)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)
VerifyAccess()

Çağıran iş parçacığının bu DispatcherObjectöğesine erişmesini zorlar.

(Devralındığı yer: DispatcherObject)

Şunlara uygulanır