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,Triggers和VisualState而达到行不通的.
再次,不确定我们是否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
祝你好运.
| 归档时间: |
|
| 查看次数: |
3158 次 |
| 最近记录: |