UWP禁用可视状态或删除触发器

时间:2017-08-20 21:05:10

标签: c# uwp uwp-xaml visualstatemanager adaptive-trigger

我有一个UWP应用程序并且在xaml中具有可视状态触发器,如此

<VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="WindowStates">
                <VisualState x:Name="WideState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="850" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <!-- <Setter Target="MenuGrid.Grid.Background" Value="LightYellow" /> -->
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="NarrowState"> ...

现在我想禁用其中一个可视状态或在代码中以编程方式完全删除触发器。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

以下是如何完全删除它们。

// Stop the child Storyboad if there's one.
MyVisualState.Storyboard?.Stop();

// Remove all triggers.
foreach (var trigger in MyVisualState.StateTriggers)
{
    MyVisualState.StateTriggers.Remove(trigger);
}

但是,我使用下面的方法,以便我可以删除并稍后添加它们。您需要先命名所有AdaptiveTrigger

// Remove a specific trigger.
MyVisualState.StateTriggers.Remove(MyTrigger);

// Add it back.
MyVisualState.StateTriggers.Add(MyTrigger);