C# Winrt Windows Phone 8.1 GoToStateTAction不工作?

C# Winrt Windows Phone 8.1 GoToStateTAction不工作?,c#,xaml,mvvm,winrt-xaml,C#,Xaml,Mvvm,Winrt Xaml,我有WinRT电话应用程序,我想使用MVVM命令显示/隐藏顶部导航,但是我被卡住了。我无法使用VisualState和动画使动画正常工作 编辑: 我在stackpanel上丢失了一个rendertransform,但是它仍然不起作用 当我点击调用经典动画的按钮时,stackpanel正在隐藏自己。但是,我仍然无法使用GoToStateAction使stackpanel移动,你知道为什么吗 这是我的XAML(已更新): MVVM C#: 使用系统; 使用System.Collections.Obj

我有WinRT电话应用程序,我想使用MVVM命令显示/隐藏顶部导航,但是我被卡住了。我无法使用VisualState和动画使动画正常工作

编辑:

我在stackpanel上丢失了一个rendertransform,但是它仍然不起作用

当我点击调用经典动画的按钮时,stackpanel正在隐藏自己。但是,我仍然无法使用GoToStateAction使stackpanel移动,你知道为什么吗

这是我的XAML(已更新):

MVVM C#:

使用系统;
使用System.Collections.ObjectModel;
使用系统组件模型;
使用System.Windows.Input;
使用GalaSoft.MvvmLight;
使用GalaSoft.MvvmLight.Command;
名称空间App3.ViewModels
{
公共类MainViewModel:ViewModelBase
{
公共主视图模型()
{
}
私有状态;
公共int显示状态
{
获取{return displayState;}
设置
{
设置(()=>DisplayState,ref DisplayState,value);
}
}
公共ICommand DisplayPopupCommand
{
得到
{
返回新的RelayCommand(
(p) =>
{
DisplayState=int.Parse(p);
});
}
}
公共ICommand CloseCommand
{
得到
{
返回新的RelayCommand()
=>DisplayState=1);
}
}
公共ICommand ShowTopNavCommand
{
得到
{
返回新的RelayCommand()
=>DisplayState=0);
}
}
公共事件属性更改事件处理程序属性更改;
私有void NotifyPropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(null!=处理程序)
{
处理程序(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
}

有人知道我做错了什么吗?谢谢你的帮助

您是否尝试在GoToStateAction中指定TargetName我在GoToStateAction中没有TargetName我有TargetObject,但是它是一个框架元素,所以我尝试了TargetObject=“{Binding ElementName=NavStackPanel}”,但仍然不起作用=(您将绑定到TargetObject=“{Binding ElementName=LayoutRoot}”而不是NavStackPanel,如果是这样的话。所以我应该尝试TargetObject=“{Binding ElementName=LayoutRoot}”(不起作用)我不知道这是否也与您的问题有关,但在stackpanel中,我没有看到TranslateTransform的声明,
       <Page
            x:Class="App3.MainPage"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:App3="using:App3"
            xmlns:core="using:Microsoft.Xaml.Interactions.Core"
            xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
            mc:Ignorable="d"
            Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.Resources>
            <Storyboard  x:Name="HideTopNavStoryboardV2">
                <DoubleAnimation Duration="0:0:0.3" To="-140" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
                <DoubleAnimation Duration="0:0:0.3" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
            </Storyboard>
        </Page.Resources>

            <Grid x:Name="LayoutRoot">
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="NavigationStateGroup">
                        <VisualState x:Name="HideTopNavStoryboard">
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:0.3" To="-140" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
                                <DoubleAnimation Duration="0:0:0.3" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="ShowTopNavStoryboard">
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:0.6" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
                                <DoubleAnimation Duration="0:0:0.6" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="NavStackPanel" d:IsOptimized="True"/>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <interactivity:Interaction.Behaviors>
                    <core:DataTriggerBehavior Binding="{Binding DisplayState}" Value="0">
                        <core:GoToStateAction StateName="ShowTopNavStoryboard"  TargetObject="{Binding ElementName=LayoutRoot}"/>
                    </core:DataTriggerBehavior>
                    <core:DataTriggerBehavior Binding="{Binding DisplayState}" Value="1">
                        <core:GoToStateAction StateName="HideTopNavStoryboard"  TargetObject="{Binding ElementName=LayoutRoot}"/>
                    </core:DataTriggerBehavior>
                </interactivity:Interaction.Behaviors>

                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <StackPanel 
                    x:Name="NavStackPanel"
                    Grid.Row="0" >
                 <StackPanel.RenderTransform>
                    <CompositeTransform/>
                </StackPanel.RenderTransform>
                    <TextBox Text="Search for something" />
     <TextBlock Text="{Binding DisplayState ,Mode=TwoWay}" Foreground="Red" FontSize="23" HorizontalAlignment="Center"></TextBlock>

                </StackPanel>
            </Grid>




  <Page.BottomAppBar>
            <CommandBar Opacity="0.7">
                <AppBarButton Label="Hide" Icon="Up" Command="{Binding CloseCommand}" />
                <AppBarButton Label="Show" Icon="Add" Command="{Binding ShowTopNavCommand}" />
   <AppBarButton Label="Hide" Icon="UpLoad" Click="ButtonBase_OnClick" />

            </CommandBar>
        </Page.BottomAppBar>
    </Page>
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            HideTopNavStoryboardV2.Begin();
        }
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Input;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;


namespace App3.ViewModels
{
    public class MainViewModel : ViewModelBase
    {
        public MainViewModel()
        {

        }
   private int displayState;
        public int DisplayState
        {
            get { return displayState; }
            set
            {
                 Set(() => DisplayState, ref displayState, value);
            }
        }

        public ICommand DisplayPopupCommand
        {
            get
            {
                return new RelayCommand<string>(
                    (p) =>
                    {
                        DisplayState = int.Parse(p);
                    });
            }
        }

        public ICommand CloseCommand
        {
            get
            {
                return new RelayCommand(()
                   => DisplayState = 1);
            }
        }

        public ICommand ShowTopNavCommand
        {
            get
            {
                return new RelayCommand(()
                   => DisplayState = 0);
            }
        }


        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged(String propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (null != handler)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}