Состояния WPF / Silverlight - активировать из XAML? - PullRequest
5 голосов
/ 25 мая 2010

Вид быстрого вопроса: Можно ли активировать viewstate из XAML? Я смог активировать только один из CS, используя метод VisualStateManager.GotoState (). Это решило бы некоторые из моих проблем с MVVM, если бы это было легко возможно.

Спасибо

1 Ответ

7 голосов
/ 25 мая 2010

Если вы знакомы с поведением, триггерами и действиями Blend, существует GoToStateAction, который является частью пространства имен Microsoft.Expression.Interactivity.Core. Вы должны будете ссылаться на интерактивные сборки, которые являются частью Blend SDK .

После того, как вы настроили ссылки, это так же просто, как указать действие GoToStateAction для реакции на какой-то триггер ... все в XAML. Вот пример, который запускает действие из события Loaded, используя EventTrigger:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions">
    <Grid x:Name="LayoutRoot">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Loaded">
                <ic:GoToStateAction StateName="MyVisualState"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        ...
    </Grid>
</UserControl>

Дополнительная информация и руководство по конкретному действию GoToState здесь .

РЕДАКТИРОВАТЬ : Этот ответ относится только к Silverlight, не уверен, доступен ли он в WPF.

...