如何在WinRT XAML中更改其值时为TextBlock设置动画?

The*_*Sky 3 c# xaml windows-runtime winrt-xaml

我有以下内容 Storyboard

<Storyboard x:Name="DeleteStoryboard">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="StatusTextBlock">
        <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
        <EasingDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
        <EasingDoubleKeyFrame KeyTime="0:0:5" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)

和以下 TextBlock

<TextBlock x:Name="StatusTextBlock" Text="{Binding Status}">
Run Code Online (Sandbox Code Playgroud)

两者SettingsFlyout都不是Page.

我想在价值变化Storyboard时开始TextBlock.

我正在使用MVVM,所以除非绝对必要,否则请不要使用代码隐藏的东西.

我试图寻找线索,并试图不同的组合Behaviors,TriggersVisualState而达到行不通的.

Jer*_*xon 6

再次,不确定我们是否100%同意.但是,仍然是,你可以这样做:

public class MyViewModel : INotifyPropertyChanged
{
    public string Text { get; set; }
    public event PropertyChangedEventHandler PropertyChanged;
}

public void Loaded()
{
    var myBox = new TextBox();
    var myAni = new Storyboard();
    var MyVvm = new MyViewModel();

    // sensible approach
    myBox.TextChanged += (s, e) => myAni.Begin();

    // forced approach
    MyVvm.PropertyChanged += (s, e) =>
    {
        if (e.PropertyName.Equals("Text"))
            myAni.Begin();
    };
}
Run Code Online (Sandbox Code Playgroud)

最后,您是自己的应用程序的开发人员.不是我.

如果您愿意使用行为,您也可以这样做:

<Page.Resources>
    <Storyboard x:Name="FadeAway">
        <DoubleAnimation Duration="0:0:1" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="textBox" d:IsOptimized="True"/>
    </Storyboard>
</Page.Resources>

<TextBox x:Name="textBox">
    <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="TextChanged">
            <Media:ControlStoryboardAction Storyboard="{StaticResource FadeAway}"/>
        </Core:EventTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

我想你可以使用一种行为来获得"纯粹的"MVVM方法.它让你100%XAML,这让一些开发人员感到温暖和模糊; 我明白了.而且,我喜欢行为.看.我不想在这里与你争论,只是顶级方法肯定不是"错误的".

了解有关行为的更多信息:http://blog.jerrynixon.com/2013/10/everything-i-know-about-behaviors-in.html

祝你好运.