2010-05-24 3 views
5

Быстрый вопрос: Можно ли активировать viewstate из XAML? Я только смог активировать один из CS, используя метод VisualStateManager.GotoState(). Это могло бы устранить некоторые из моих проблем MVVM, если бы это было легко возможно.WPF/Silverlight States - Активировать из XAML?

Благодаря

ответ

7

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

Как только у вас есть ссылки, это так же просто, как указание GoToStateAction, чтобы реагировать на какой-то триггер ... все в XAML. Вот пример, который запускает действие прочь нагруженного события, используя 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 here.

EDIT: Этот ответ относится к Silverlight, но не уверен, что он доступен в WPF.

+0

Я использую Blend 4, мне все еще нужен SDK Blend 3? --- Неа. – Peanut

+0

Это работало СОВЕРШЕННО. Большое спасибо!!! – Peanut