WPF/Silverlight状态 - 从XAML激活?

Pea*_*nut 5 viewstate silverlight wpf

一个简单的问题:是否可以从XAML激活视图状态?我只能使用VisualStateManager.GotoState()方法从CS激活一个.如果它很容易实现,这将解决我的一些MVVM问题.

谢谢

Dan*_*air 7

如果您熟悉Blend行为,触发器和操作,则会有一个GoToStateAction,它是Microsoft.Expression.Interactivity.Core命名空间的一部分.您必须引用属于Blend SDK的交互式程序集.

一旦你设置了引用,它就像指定GoToStateAction以对某种触发器做出反应一样简单......所有这些都在XAML中.下面是一个使用EventTrigger触发Loaded事件的动作的示例:

<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>
Run Code Online (Sandbox Code Playgroud)

有关特定GoToState操作的更多信息和教程,请点击此处.

编辑:此答案特定于Silverlight,不确定它是否在WPF中可用.