WinRT中的DataTrigger?

Mur*_*ven 18 xaml windows-8 windows-runtime

我能够在WinRT参考中找到EventTrigger,但是,我无法找到DataTrigger.我也无法在应用程序中使用它.

任何人都可以确认WinRT中确实缺少DataTrigger吗?EventTrigger是WinRT中唯一可用的触发器吗?

小智 20

WinRT XAML目前不支持DataTrigger.

Mike Brown的附录

DataTrigger API已替换为VisualStateManager,Blend SDK for Silverlight提供了与数据触发器类似的API.由于附加行为模式在WinRT中有效,因此可以执行相同的操作.

  • 我会说这是一个很大的遗漏.它是否计划用于最终版本? (7认同)
  • DataTriggers的悲伤! (4认同)
  • 我仍然没有看到VisualStateManager如何代表数据触发器的替代品.它们提供不同的功能,可以结合使用.您是否有任何关于为何判断VisualStateManager可以替代DataTrigger的细节? (4认同)

Pet*_*ter 2

我不知道它什么时候改变,但我改变了,将DataTriggerBehavior它们GoToStateAction结合起来应该可以解决你的问题......

命名空间导入

xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity" 
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
Run Code Online (Sandbox Code Playgroud)

ViewSateManager 放置在根元素上

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="Common">
        <VisualStateGroup.Transitions>
            <VisualTransition GeneratedDuration="0" To="Online">
                <Storyboard>
                    <ColorAnimation Duration="0" To="Lime" Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="Name" />
                </Storyboard>
            </VisualTransition>
            <VisualTransition GeneratedDuration="0" To="Offline">
                <Storyboard>
                    <ColorAnimation Duration="0" To="Red" Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="Name" />
                </Storyboard>
            </VisualTransition>
        </VisualStateGroup.Transitions>
        <VisualState x:Name="Online" />
        <VisualState x:Name="Offline" />
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Interactivity:Interaction.Behaviors>
    <Core:DataTriggerBehavior Binding="{Binding Active}" Value="True">
        <Core:GoToStateAction StateName="Online" />
    </Core:DataTriggerBehavior>
    <Core:DataTriggerBehavior Binding="{Binding Active}" Value="False">
        <Core:GoToStateAction StateName="Offline" />
    </Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
Run Code Online (Sandbox Code Playgroud)