2010-01-14 37 views
13

Come si ottiene a livello di codice lo stato corrente di un WPF FrameworkElement? E per Stato intendo gli stati come "Normal", "MouseOver", "Disabilitato", eccCome posso ottenere lo stato visuale corrente di un oggetto WPF FrameworkElement?

EDIT: Fondamentalmente, io sto cambiando lo stato visivo di un pulsante con VisualStateManager.GoToState(e, "MouseOver", true);, e voglio sapere quale stato per cambiarlo di nuovo dopo che ho finito.

risposta

2

Penso che devi conoscere/ricordare lo stato del pulsante da solo. VSM mostra semplicemente lo stato in cui si trova il pulsante con il metodo GoToState.

Modifica: Ho appena trovato un articolo su come creare un custom VSM che ricorda gli stati di controllo.

+2

Il tuo collegamento è marcito. – JohnFx

0

Penso che dovresti usare il metodo GoToElementState invece del metodo GoToState.

VisualStateManager.GoToElementState(LayoutRoot, "Add", true); 
+0

Strano, non vedo nemmeno questo metodo. Ovviamente sto utilizzando VisualStateManager dal toolkit WPF per .NET 3.5, quindi potrebbe essere diverso da quello integrato in .NET 4.0 o Silverlight. – jpierson

0

Mi sembra che tu abbia mancato il punto di WPF qui, è la vista non il modello. Non si dovrebbe memorizzare lo stato nella vista. Memorizza lo stato nei tuoi modelli e usa la vista per rappresentarli. Su questa base non hai bisogno di leggere lo stato della View, lo sai già.

So che questo potrebbe sembrare un sacco di lavoro al momento, ma ti ripagherà più tardi.

Problemi correlati